不要捕获异常,即使是在try块中也是如此

dot*_*hen 0 python exception

假设一个结构良好的OOP Python应用程序,其中对方法的每次调用都包含在try块中.现在假设我正在调试这个应用程序,我希望实际抛出异常!try:用调试来替换每一行if True:并注释掉"""这些except:部分几乎是不可能的.有没有办法告诉Python解释器特定部分代码抛出的异常应该停止程序执行并将异常信息打印到stdout?

Kubuntu Linux上的Python 2.7.3或3.2.3.

mgi*_*son 5

"假设一个结构良好的OOP Python应用程序,其中对方法的每次调用都包含在try块中......"

对我来说,这听起来并不合理.异常处理的基本原则之一是处理您知道如何处理的例外情况.这是您将看到的常见"不要使用裸露的除外"声明背后的驱动原则:

try:
   do_something()
except:   #BAD BAD BAD
   react_to_exception()
Run Code Online (Sandbox Code Playgroud)

"由特定部分代码抛出"......我们谈论的代码部分有多具体?如果是单个块,您可以随时重新加注:

try:
    do_something()
except ValueError as e:
    raise e  # or `raise` or `raise SomeOtherError() from e` in more modern pythons.
Run Code Online (Sandbox Code Playgroud)

  • @dotancohen你为什么要捕捉一个你不知道如何处理的例外?你的整个问题都来自你过早捕捉异常!只需删除所有`try ...除了`并且只捕获你知道的例外1.它们发生的地方,以及2.如何处理它们. (2认同)