以下代码的输出不同,如果:
def foo():
try:
print 1/0
except Exception:
return 'Caught in foo'
try:
print 'FOOO'
print foo()
except Exception:
print 'Caught in main'
输出:FOOO\n在foo中捕获
try:
print 'FOOO'
print foo()
except Exception:
print 'Caught in main'
def foo():
try:
print 1/0
except Exception:
return 'Caught in foo'
输出:FOOO\n在main中捕获
为什么两种情况下的输出不同?你知道吗
在第一种情况下,会出现以下错误:
在第二种情况下,你会得到:
第二个是因为调用
foo()
函数时还没有定义它。你知道吗因为他们提出了不同的例外。你知道吗
All built-in, non-system-exiting exceptions are derived from ^{} 。
except Exception
捕获大多数异常,这种行为常常令人困惑。你知道吗您应该始终捕获特定的异常,例如} ,您应该只捕获:
1/0
引发^{您将在输出中看到不同的错误
因为它没有被
except ZeroDivisionError
捕获(issubclass(NameError, ZeroDivisionError)
是False
)。你知道吗因为在第二种情况下,例外情况是:
尝试不要在main中捕获异常,或者
print
捕获它。foo
不是由您尝试调用它的时间定义的。你知道吗相关问题 更多 >
编程相关推荐