除了所有潜在错误之外,最好的方法是什么?
## Try to...
try:
## Print
print "hi"
## On failure to get data
except Exception:
## Exit out of current function
return
或
## Try to...
try:
## Print
print "hi"
## On failure to get data
except:
## Exit out of current function
return
还是有更好的方法吗?
提前致谢 - Hyflex
答案 0 :(得分:3)
通常,始终会捕获您知道会发生的特定错误。特别是如果你抓住了所有东西(即except:
),你将抓住KeyboardInterrupt
并使Ctrl+C
不能让你的程序停止; SystemExit
用于杀死一个线程,等等......虽然捕捉Exception
略好一些,但它仍然会失去太多的上下文;发生的异常情况可能不是您预期的。因此,总是以他们的名字捕捉IOError
,ValueError
,TypeError
等等。
<强>更新强>
除了Exception之外,还有1种情况需要使用;在程序的顶层,或者您希望确保整个程序不会因未被捕获的异常而崩溃的操作。
答案 1 :(得分:3)
永远不要使用裸except:
。如果你这样做,你最终会捕捉SystemExit
和KeyboardInterrupt
之类的东西,这些东西不会被大多数代码捕获。
理想情况下,您应该尝试尽可能具体 - 例如,针对失败的IOError
捕获print
。如果您无法准确预测您所关注的异常,那么至少您应该使用except Exception
来避免上述问题。