Python:在不处理异常的情况下尝试捕获else。可能的
我是python新手,不知道是否可以在不处理异常的情况下生成try-catch-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,异常/正在/正在处理,但什么也不做。所以
下面的示例代码显示了如何使用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)