首页后端开发Python函数遇到问题是抛出错误好还是约定返回值好

函数遇到问题是抛出错误好还是约定返回值好

时间2023-06-07 11:19:02发布访客分类Python浏览952
导读:函数遇到问题是抛出错误好还是约定返回值好?结论:不说那个好,抛出几个例子,题主您看看,哪个更好。前言就跟老师讲课一样,直接给说一个定理,一个结论,太抽象,我都不知道这是什么呢,你就告诉我要怎么用?所以本文用代码样例,告诉你哪个才是更好的选择...

函数遇到问题是抛出错误好还是约定返回值好?

结论:不说那个好,抛出几个例子,题主您看看,哪个更好。

前言

就跟老师讲课一样,直接给说一个定理,一个结论,太抽象,我都不知道这是什么呢,你就告诉我要怎么用?

所以本文用代码样例,告诉你哪个才是更好的选择。

手动控制异常

python的异常信息,可以手动显式抛出,像下面这样。

使用raise关键字,抛出ValueError异常。那么执行后就可以异常中断。

使用try - catch 结构捕捉异常信息,可以写入日志,或控制台打印。

这样不会中断程序,继续运行,在线上的代码,尤其如此。

上图示例,一个没有被捕捉到的异常,中断了程序运行。

最佳实践

如何正确而优雅无害地控制抛出异常呢?上段我们使用的两种方式,手动修改了execption message内容,这样看起来错误信息很直观,可是不利于排查故障点。

所以最佳实践上,可以从这些点出发。

1 - 不要修改异常信息

将程序的错误信息,捕捉到之后,输出到日志文件。

2 - 使用sys.exc_info()保留堆栈追踪和错误值

如图,sys.exec_info()返回错误类型,值,和堆栈信息,方便定位。执行起来大概是这样的。

不过要注意的是 python2和python3略有区别。python3你可以使用异常信息链式追踪。

类似上述方式。

一个长列表:python有哪些异常

下面列出了python内29个异常的详细情况。

这些都是在程序运行中可能抛出的,也是程序员可以在程序中手动抛出的异常类型。

结语

一般写小型的脚本处理函数,可以手动控制异常,这也是python的常见做法。

而大型的框架,一般对异常类型做了深层次的封装,不同类型的库,抛出不同的异常。

面向对象的写法,可以很容易用继承的方式处理异常。

我是@程序员小助手,持续分享编程与程序员成长相关的内容,欢迎关注~~

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: 函数遇到问题是抛出错误好还是约定返回值好
本文地址: https://pptw.com/jishu/65332.html
有哪种白给你都不想要的超能力 python命令能不能只检查语法

游客 回复需填写必要信息