Python:在不处理异常的情况下尝试捕获else。可能的

Python:在不处理异常的情况下尝试捕获else。可能的,python,exception,try-catch,Python,Exception,Try Catch,我是python新手,不知道是否可以在不处理异常的情况下生成try-catch-else语句 比如: 下面的示例代码显示了如何使用pass捕获和忽略异常 try: do_something() except RuntimeError: pass # does nothing else: print("Message: ", line) 虽然我同意Jochen Ritzel的答案是好的,但我认为可能有一点疏忽。通过passing,异常/正在/正在处理,但什么也不做。所以

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

比如:


下面的示例代码显示了如何使用pass捕获和忽略异常

try:
    do_something()
except RuntimeError:
    pass # does nothing
else:
    print("Message: ", line) 

虽然我同意Jochen Ritzel的答案是好的,但我认为可能有一点疏忽。通过
pass
ing,异常/正在/正在处理,但什么也不做。所以实际上,这个异常被忽略了

如果您确实不想处理异常,那么异常应该是
raise
d。下面的代码对Jochen的代码进行了更改

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

谢谢我将在几分钟内将此答案标记为已更正(在几分钟内不可能)。问题是不处理异常-使用
raise
比使用
pass
更好。这与
do_something()不完全相同吗;打印(“消息:,行)
?@KirkStrauser是的,但显式优于隐式。任何用户都会看到一个except是预期的,然后向调用者发出,而不必查看
dou\u something
是否会引发任何异常。@Darthfett我认为这太过分了。如果您认为可能会出现异常,您应该正确处理它(即使这只是打印一条用户友好的消息),否则,请将其忽略。如果是我,
dou_something()
不会
引发
。我会调用
dou\u something
,然后
raise
明确指出:如果您想要处理其他问题,并且最终允许异常不受阻碍地传播,那么这种格式确实很有用。(例如,从
else
上的函数返回,最后关闭
上已获取的连接,并让脚本的其余部分正常处理
以外的
try:
    do_something()
except RuntimeError:
    raise #raises the exact error that would have otherwise been raised.
else:
    print("Message: ", line)