当前位置: 首页 > news >正文

广告营销有哪些/北京seo优化方案

广告营销有哪些,北京seo优化方案,深圳有没有什么网站,wordpress忘记密码函数接着我们上次的内容继续。简单回顾下,上次的这种嵌入方式在Python中称为纯嵌入,我们可以定义自己的模块,在模块中定义自己的函数,通过C API可以让Python解释器识别我们的自定义模块。在程序调试的过程中,难免会有错误产…

接着我们上次的内容继续。简单回顾下,上次的这种嵌入方式在Python中称为纯嵌入,我们可以定义自己的模块,在模块中定义自己的函数,通过C API可以让Python解释器识别我们的自定义模块。

在程序调试的过程中,难免会有错误产生,谁也不希望程序出错后一点提示信息也没有,然后就挂了。就像程序员最不喜欢写文档,然后也很痛恨接手的项目没有文档一样~~~如何获取嵌入Python的报错信息,就是本次的主要内容。

回想当时在网上找了好久,终于完成了上一次的程序,还兴奋了好一会儿~~但接下来的问题就是如何获取程序的出错信息。在基于上一次的程序基础上,得出的最终结果是不行!惊不惊喜?刺不刺激?翻阅了网上大部分文章,得出一个非常一致的结论,要用下面的代码片段:PyObject *ptype = NULL, *pvalue = NULL, *ptraceback = NULL;

PyErr_Fetch(&ptype,&pvalue,&ptraceback);

PyErr_NormalizeException(&ptype,&pvalue,&ptraceback);(可有可无)

if(pvalue)

{

……

}

但是,并没有说在哪添加……试了N多次无果。最终读了N次stackoverflow(英语还是很重要),从前辈们的只言片语中发现了秘密…帖子的时间好像是2013年吧…

OK,老规矩,直接“上马”。

void Widget::on_pbn_runPython_clicked()

{

qDebug() << “enter python !”;

PyImport_AppendInittab(“dahe”, &PyInit_math);

Py_Initialize();

if (!Py_IsInitialized())

{

qDebug() << “inital faild!”;

}

PyRun_SimpleString(“import dahe”);

QFile f(“/root/Python/Article/compilePython/dhTest.py”);

if(!f.open(QFile::ReadOnly | QFile::Text))

{

qDebug() << “read file faild:” << qPrintable(f.errorString());

}

QTextStream stream(&f);

QString test = stream.readAll();

QByteArray ba = test.toLatin1();

const char * script_source = ba.data();

PyObject* main = PyModule_GetDict(PyImport_AddModule(“__main__”));

PyObject *res = PyRun_String(script_source,Py_file_input,main,main);

if(res == NULL)

{

PyObject *ptype = NULL, *pvalue = NULL, *ptraceback = NULL;

PyErr_Fetch(&ptype,&pvalue,&ptraceback);

PyErr_NormalizeException(&ptype,&pvalue,&ptraceback);

if(pvalue)

{

PyObject *pstr = PyObject_Str(pvalue);

if(pstr) {

const char* err_msg = PyUnicode_AsUTF8(pstr);

if(pstr)

{

printf(“%s—-\n”,err_msg);

}

}

}

char *msg, *file, *text;

int line, offset;

int res = PyArg_ParseTuple(pvalue,”s(siis)”,&msg,&file,&line,&offset,&text);

Q_UNUSED(res);

PyObject* line_no = PyObject_GetAttrString(pvalue,”lineno”);

PyObject* line_no_str = PyObject_Str(line_no);

PyObject* line_no_unicode = PyUnicode_AsEncodedString(line_no_str,”utf-8″, “Error”);

char *actual_line_no = PyBytes_AsString(line_no_unicode);

printf(“actual_line_no –%s\n”,actual_line_no);

}

Py_Finalize();

}

上述代码是前一次内容的修改,重复部分不再赘述。

使用QFile读取存储文件的内容,该部分简单略过。

在这里看到了PyErr_Fetch(&ptype,&pvalue,&ptraceback)该函数是如何使用的,需要先“编译”python文件,在编译过程中出错才可以调用该函数捕获出错信息。PyObject *res = PyRun_String(script_source,Py_file_input,main,main)注意后面的两个main,如果传为NULL,有时测试出错会报出PyEval_EvalCodeEx: NULL globals这个出错信息,注意下。

PyErr_NormalizeException(&ptype,&pvalue,&ptraceback)该函数用于将异常信息格式化输出,根据需要来使用。不使用的话会捕获到更原始的信息。

PyObject *pstr = PyObject_Str(pvalue) 、const char* err_msg = PyUnicode_AsUTF8(pstr),python C API中的类型大多是PyObject *,这里提供了一种转为c中char*的方法。

Q_UNUSED(res),Qt中提供的一种消除无用参数警告的方式,该宏的函数原型是(void)()。

程序的最后部分是获取出错信息的位置,也就是行号。Pvalue捕获的是出错的内容,有时也会有行号。

至此,程序简单说明结束。下面给出脚本内容以及捕获的具体出错内容。

http://www.lbrq.cn/news/1256545.html

相关文章:

  • 国外销售网站/如何做一个自己的网页
  • 员工支付做网站的费用分录/推广公司app主要做什么
  • 毕业设计网站建设题目/新网站怎么推广
  • seo网站模板/适合30岁女人的培训班
  • wordpress输入密码访问/seo标题优化导师咨询
  • php网站开发实用技术练习题/南昌seo专业团队
  • 阿里巴巴免费做国际网站/站长统计幸福宝下载
  • 新网做网站流程/网站制作企业有哪些
  • 如何建设企业网站/成人再就业技能培训班
  • 如何查网站是那家做的/中国十大新闻网站排名
  • 做旅游网站的目的/网上推广平台有哪些
  • 中国移动网站备案管理系统不能用/百度24小时客服电话136
  • 网站建设与网页设计制作教程/西安seo霸屏
  • 微云怎么做网站/百度推广方法
  • 单页面网站制作/天天广告联盟
  • 企业网站设计建设/免费推广的方式有哪些
  • 中小企业网站建设方案/网络营销策划书800字
  • 动叫建个网站刷排名/百度推广费用可以退吗
  • 宁波做微信网站/app注册拉新平台
  • 安庆做网站公司/网站seo优化网站
  • 政务信息系统网站建设规范/360推广平台登录入口
  • iis怎么配置网站/如何做营销
  • 光谷网站推广/网站一级域名和二级域名
  • 网站资质优化/百度空间登录入口
  • 重庆制作网站开发app开发公司/海外网络推广平台
  • 如何查看一个网站流量/免费的推广平台
  • 美国网站开发公司/比较经典的营销案例
  • 网站屏幕自适应/网站快速收录工具
  • 网站发布到ftp/seo优化网页
  • 网站建设的主要功能及定位/免费seo营销软件
  • 如何用分布式架构视角理解宇宙稳定性?从精细调参到微服务的类比思考
  • 【BUUCTF系列】[极客大挑战 2019]LoveSQL 1
  • 【Keras学习笔记】手写识别
  • Nginx vs Spring Cloud Gateway:限流功能深度对比与实践指南
  • Planner 5D v2.29.0 安卓高级解锁版,手机3D家装,全套家具免费
  • Android的UI View是如何最终绘制成一帧显示在手机屏幕上?