📅  最后修改于: 2023-12-03 14:54:51.663000             🧑  作者: Mango
这是一道面向程序员的题目,主要测试对于调试和异常处理方面的掌握程度。以下是题目:
48. 以下程序的输出是什么?
try:
raise Exception
except BaseException:
print('a')
except Exception:
print('b')
except:
print('c')
这个程序中有三个异常处理块。第一个块可以接收到所有的异常,因为BaseException
是Exception
的超类。所以,对于所有的异常,都会输出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')