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,要么加一个处理键盘中断的语句。

posted @ 2024-09-14 15:31  思念殇千寻  阅读(69)  评论(0编辑  收藏  举报