如何以一种体面的方式处理Python异常?

nbnkbykc  于 2023-05-08  发布在  Python
关注(0)|答案(2)|浏览(210)

我正在用Python开发一个在线服务。由于这是一个在线服务,我不希望在任何情况下的服务下来。所以我添加了大量的try.. except...,以确保如果发生任何不好的事情,我会捕捉到它并报告它。
像这样的代码

try:
    code here
except Exception as e:
    reportException(e)

some code here # I cannot put everything in a single `try...except` statement

try:
    code here
except Exception as e:
    reportException(e)

我知道这是一个坏的方法,因为我不得不使用try几次。我想知道有没有可能以一种优雅的方式做到这一点?

6uxekuva

6uxekuva1#

可以将try语句与循环结合使用:

for action in [act_1, act_2, act_3, ...]:
    try:
        action(line)
    except:
        reportException()
gkn4icbw

gkn4icbw2#

我认为更好的方法是在程序的最外层捕获异常,这就是Django框架所做的。事实上,在处理异常时,不建议捕获“Exception”异常,但如果你的项目要这样做,在程序的最外层捕获它们会更优雅。例如,将所有代码放入“main”函数中,然后直接去捕获“main”函数抛出的异常。

def main():
    # all your code and do not use try...except
    code here
    code here
    code here
try:
    main()
except Exception as e:
    reportException(e)

相关问题