gpt4 book ai didi

python - 在 python 中捕获除特定异常之外的所有异常

转载 作者:行者123 更新时间:2023-11-28 22:11:08 24 4
gpt4 key购买 nike

我有一个代码库,代码如下:

try:
do_stuff()
except:
print "yes, it's catching EVERYTHING"

不幸的是,我没有足够快的方法知道可能会出现哪些类型的异常,并且无法让系统在遇到异常时崩溃。

这让调试变得很糟糕。

我想让特定的异常溜走——比如语法错误等,让我自己更轻松。

这可能吗?捕获除某些特定异常之外的所有内容?

谢谢!

最佳答案

您可以执行以下操作:

try:
do_stuff()
except (SyntaxError, <any other exception>):
raise # simply raises the catched exception
except Exception:
print "yes, it's catching EVERYTHING"

此外,除非确实需要,否则永远不要在没有异常规范的情况下使用 except,因为它还会捕获 KeyboardInterruptGeneratorExit Exception 至少要指定;查看builtin exception hierarchy .


请注意,正如@tobias_k 在其下面的评论中所述,SyntaxError 是在实际运行脚本之前检测到的,因此不需要捕获它。

对于这个挑战,我寻找一种方法来实际捕获 SyntaxError,我发现的唯一情况如下(但还有其他情况,请参阅@brunodesthuilliers 的评论):

try:
eval(input('please enter some Python code: '))
except SyntaxError:
print('oh yeah!')
$ python syntax_error.py
please enter some Python code: /
oh yeah!

我的结论是,如果你需要捕捉 SyntaxError,这意味着你的代码库做了一些比你向我们展示的更丑陋的东西......我希望你有很大的勇气;)

关于python - 在 python 中捕获除特定异常之外的所有异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56129771/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com