首页 > 解决方案 > Python中的嵌套调用-除了所有函数之外,我是否需要尝试?

问题描述

我正在学习 python try:except 子句

我有以下调用层次结构

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

B实现如下

def B(some_args):
    C(some_args)

请注意,除了在 B 内没有尝试之外,我在 C 内进行了尝试,如下所示

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

我的问题是,如果调用层次结构中的函数之一(在这种情况下为 B)

A()
    calls B()
        calls C()

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

标签: pythonpython-3.6try-except

解决方案


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

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

catch FileNotFoundException as ex:

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


推荐阅读