📌  相关文章
📜  教资会网络 | UGC-NET CS 2017 年 11 月 – III |问题 48(1)

📅  最后修改于: 2023-12-03 14:54:51.663000             🧑  作者: Mango

UGC-NET CS 2017年11月-III 问题48

这是一道面向程序员的题目,主要测试对于调试和异常处理方面的掌握程度。以下是题目:

48. 以下程序的输出是什么?

try:
    raise Exception
except BaseException:
    print('a')
except Exception:
    print('b')
except:
    print('c')
解答

这个程序中有三个异常处理块。第一个块可以接收到所有的异常,因为BaseExceptionException的超类。所以,对于所有的异常,都会输出a

然而,raise Exception会抛出一个Exception类型的异常,因此没有在第一个块中捕获的话,就会去寻找第二个块。在这个块中,因为它能够处理Exception类型的异常,所以输出b。第三个块中的except:并没有指定一个具体的异常类型,因此可以处理所有不被之前的块所处理的异常。但是,因为之前已经有了一个被处理的Exception类型的异常,因此并不会执行到这个块。因此,这个程序输出a

因此,最终的代码应该是:

try:
    raise Exception
except BaseException:
    print('a')
except Exception:
    print('b')
except:
    print('c')

返回的markdown代码片段为:

```python
try:
    raise Exception
except BaseException:
    print('a')
except Exception:
    print('b')
except:
    print('c')