Python重新加载/重新获取异常

Aar*_*son 13 python exception raise

我想知道在python中是否有可能在一个除了块之外引发异常并在稍后的块中捕获它.我相信其他一些语言默认会这样做.

这就是它的样子"

try:
   something
except SpecificError as ex:
   if str(ex) = "some error I am expecting"
      print "close softly"
   else:
      raise
except Exception as ex:
   print "did not close softly"
   raise
Run Code Online (Sandbox Code Playgroud)

我希望在else子句中使用raise来触发final语句.

实际上我不打印任何东西,只记录它,我想记录更多的情况,这是我不期望的错误消息.但是,这个额外的日志记录将包含在最终的日志中.

我相信一个解决方案是创建一个函数,如果它没有软关闭,在最后的except和else子句中调用.但这似乎没必要.

bad*_*zil 18

怎么样写2尝试...除了像这样的块:

try:
    try:
       something
    except SpecificError as ex:
       if str(ex) == "some error I am expecting"
          print "close softly"
       else:
          raise ex
except Exception as ex:
   print "did not close softly"
   raise ex
Run Code Online (Sandbox Code Playgroud)

  • 对于2.6之后的Python,这应该是`除了特殊错误,例如:`请参阅http://stackoverflow.com/questions/2535760/python-try-except-comma-vs-as-in-except以获取逗号与as. (5认同)

Ign*_*ams 16

只调用块中的单个except子句try.如果您希望将异常捕获更高,那么您将需要使用嵌套try块.