Python:try-catch-else而不处理异常.可能?

Rox*_*Rox 14 python exception try-catch

我是python的新手,想知道我是否可以在不处理异常的情况下创建try-catch-else语句?

喜欢:

try:
    do_something()
except Exception:
else:
    print("Message: ", line) // complains about that else is not intended
Run Code Online (Sandbox Code Playgroud)

Joc*_*zel 31

以下示例代码显示了如何使用pass来捕获和忽略异常.

try:
    do_something()
except RuntimeError:
    pass # does nothing
else:
    print("Message: ", line) 
Run Code Online (Sandbox Code Playgroud)

  • 问题是“不”处理异常——使用“raise”比“pass”更好。 (4认同)

ins*_*get 7

虽然我同意Jochen Ritzel是一个很好的答案,但我认为可能会有一个小的疏忽.通过pass,异常/正在处理,只做任何事情.所以真的,这个例外被忽略了.

如果你真的不想处理异常,那么异常应该是raised.以下代码对Jochen的代码进行了更改.

try:
    do_something()
except RuntimeError:
    raise #raises the exact error that would have otherwise been raised.
else:
    print("Message: ", line) 
Run Code Online (Sandbox Code Playgroud)

  • 与`do_something()不完全相同; 打印("消息:",行)`? (4认同)
  • 请注意:如果您想处理 else AND finally,但允许异常无阻碍地传播,这种格式确实很有用。(例如,从 `else` 上的函数返回,在 `finally` 上关闭获取的连接,并让脚本的其余部分照常处理 `except`) (2认同)