Python 中的嵌套调用 - 我需要在所有函数中尝试 except 吗?

Nested calls in Python - do I need try except inside all the functions?

我正在学习pythontry:except条款

我有以下调用层次结构

def A():
     try:
         B(some_args)
     except Exception as e:
         print (repr(e))

B实现如下

def B(some_args):
    C(some_args)

注意除了B里面没有try 除了在 C 中,我尝试了以下

def C():
     try:
         dothis()
     except exception as e:
         raise e

我的问题是,如果调用层次结构中的函数之一(在本例中为 B)

A()
    calls B()
        calls C()

没有 try except 子句,A 是否仍会收到 C() 中引发的异常?

是的,会的。 try/catch 块将捕获 try 块内抛出的任何异常,无论抛出的位置有多深。

此外,您可以 catch 不同级别的特定异常,因此 B 中的 catch 块可能会捕获一个抛出的异常,而 A 中的 catch 块可能是这样的情况将捕获不同的异常,每个异常都可能在 C 或什至 C 调用的其他函数中抛出,等等。例如:

catch FileNotFoundException as ex:

会捕获 FileNotFoundException,但不会捕获其他异常