Python中错误处理Try Catch的规范
参考资料:
GPT的回答
错误处理是每一个编程语言中都必不可少的一部分,而在Python中使用的语言规范正是try except代码块。别看使用上非常简单,能够规范的用上它,并且很好地处理错误、抛出错误也不是一件容易的事情。下面简单讲解一下python种try except的使用规范:
1. 什么时候应该用try except?
众所周知一个Python程序报错之后,它会立刻停止运行。停止运行的原因就是程序在运行到某个有bug的代码行时发现了一个error,并且将这个error抛出了,在抛出这个错误的同时,程序会打印该错误的调用栈,方便程序员进行debug。在大多数的时候,这个流程完全不需要错误处理的参与,但是在一些错误频发的场景下,比如网络通信,一个代码想要长久地运行下去并不因为一个正常的错误终止(没错此时有错误也是正常的),此时就需要错误处理代码。读者可以用raise语句抛出一个RuntimeError玩一玩。
2. try except长什么样?
try except代码块的设计十分优雅:
try: somefunction() except fooerror as e1: handlefoo() except barerror as e2: handlebar() except: handleother() else: success() finally: cleanup()
即在运行的时候遇到各种类型的错误,见招拆招就好了。如果没有遇到任何问题,可以增加一个可选的else块,进行运行成功时的补充处理,如果希望无论成功与否都进行的一些操作,则可以使用finally块。
3. 捉到error之后应该做什么?
逮到error之后一般是需要处理的,比如把传输失败的图片滤掉,把read_success flag置为0等等。最通常的做法就是把错误信息和调用栈给打印出来,方便debug和确认运行状态正常:
import traceback try: somefunction() except Exception as e: print(e) traceback.print_exc()
需要注意一个比较逆天的点,如果你的try catch捕捉了所有类型的error,那么它其实还会捕捉你的ctrl + C,即keyboardinterupt,此时你这个程序就只能用kill来终止了。因此要么只捕捉特定类型的error,要么加一个处理键盘中断的语句。