1

排除所有潜在错误的最佳方法是什么?

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

4

2 回答 2

3

通常,始终捕获您知道会发生的特定错误。特别是如果您捕获所有内容,(即except:)您将捕获KeyboardInterrupt并使您的程序无法停止Ctrl+CSystemExit那是用来杀死一个线程的,等等……虽然捕获Exception稍微好一点,但它仍然会丢失太多上下文;发生的异常情况可能与您的预期不同。因此,总是通过他们的名字来捕捉IOError,ValueError等等。TypeError

更新

有 1 种情况要使用,除了 Exception;在程序的顶层,或者您要确保整个程序不会由于未捕获的异常而崩溃的操作。

于 2013-08-18T18:08:53.813 回答
3

切勿使用裸露的except:. 如果你这样做了,你最终会捕捉到 and 之类的东西SystemExitKeyboardInterrupt这些东西在大多数代码中都不会被捕捉到。

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

于 2013-08-18T18:09:04.200 回答