does the error make its way up the call stack so that Function A also throws a ValueError?
让我们试试看。在def a():
try:
b()
except ValueError:
print("Caught a value error in `a`.")
def b():
c()
def c():
raise ValueError
a()
结果:
^{pr2}$
是的,看起来错误是从调用堆栈中爬出来的。在what if you create your own Exception that is defined in Function C only, will it also go up the Call stack so that Function A throws the same error?
让我们试试看。在def a():
try:
b()
except:
print("Caught some kind of exception in `a`.")
def b():
c()
def c():
class MyCustomException(Exception):
pass
raise MyCustomException
a()
结果:Caught some kind of exception in `a`.
是的,自定义异常也会进入调用堆栈。但是您不能在a中执行except MyCustomException:,因为该名称只存在于c中。因此,在可行的情况下,在全局范围内声明类。在