在失败的尝试中退出函数的最可靠方法

时间:2013-08-18 18:04:38

标签: python python-2.7 exception-handling error-handling return

除了所有潜在错误之外,最好的方法是什么?

## 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

2 个答案:

答案 0 :(得分:3)

通常,始终会捕获您知道会发生的特定错误。特别是如果你抓住了所有东西(即except:),你将抓住KeyboardInterrupt并使Ctrl+C不能让你的程序停止; SystemExit用于杀死一个线程,等等......虽然捕捉Exception略好一些,但它仍然会失去太多的上下文;发生的异常情况可能不是您预期的。因此,总是以他们的名字捕捉IOErrorValueErrorTypeError等等。

<强>更新

除了Exception之外,还有1种情况需要使用;在程序的顶层,或者您希望确保整个程序不会因未被捕获的异常而崩溃的操作。

答案 1 :(得分:3)

永远不要使用裸except:。如果你这样做,你最终会捕捉SystemExitKeyboardInterrupt之类的东西,这些东西不会被大多数代码捕获。

理想情况下,您应该尝试尽可能具体 - 例如,针对失败的IOError捕获print。如果您无法准确预测您所关注的异常,那么至少您应该使用except Exception来避免上述问题。