python 标准错误输出 Python编程中,函数遇到问题是抛出错误好还是约定返回值好?

[更新]
·
·
分类:互联网
2374 阅读

python 标准错误输出

Python编程中,函数遇到问题是抛出错误好还是约定返回值好?

Python编程中,函数遇到问题是抛出错误好还是约定返回值好?

结论:不说那个好,抛出几个例子,题主您看看,哪个更好。
前言就跟老师讲课一样,直接给说一个定理,一个结论,太抽象,我都不知道这是什么呢,你就告诉我要怎么用?
所以本文用代码样例,告诉你哪个才是更好的选择。
手动控制异常python的异常信息,可以手动显式抛出,像下面这样。
使用raise关键字,抛出ValueError异常。那么执行后就可以异常中断。
使用try - catch 结构捕捉异常信息,可以写入日志,或控制台打印。
这样不会中断程序,继续运行,在线上的代码,尤其如此。
上图示例,一个没有被捕捉到的异常,中断了程序运行。
最佳实践如何正确而优雅无害地控制抛出异常呢?上段我们使用的两种方式,手动修改了execption message内容,这样看起来错误信息很直观,可是不利于排查故障点。
所以最佳实践上,可以从这些点出发。
1 - 不要修改异常信息
将程序的错误信息,捕捉到之后,输出到日志文件。
2 - 使用sys.exc_info()保留堆栈追踪和错误值
如图,sys.exec_info()返回错误类型,值,和堆栈信息,方便定位。执行起来大概是这样的。
不过要注意的是 python2和python3略有区别。python3你可以使用异常信息链式追踪。
类似上述方式。
一个长列表:python有哪些异常下面列出了python内29个异常的详细情况。
这些都是在程序运行中可能抛出的,也是程序员可以在程序中手动抛出的异常类型。
结语一般写小型的脚本处理函数,可以手动控制异常,这也是python的常见做法。
而大型的框架,一般对异常类型做了深层次的封装,不同类型的库,抛出不同的异常。
面向对象的写法,可以很容易用继承的方式处理异常。
我是@程序员小助手,持续分享编程与程序员成长相关的内容,欢迎关注~~

Python27 json解码出错怎么解决?

原因是()不是有效的json格式。错误是NoJSONobjectcouldbedecoded不能解码为json数据对象格式。不是json格式无法改,不是json只能采用切片提取。