作业17
1.编写代码抛出TypeError并尝试捕获它
try: x = 'a'+1 except TypeError: print('TypeError')
2.as关键字的作用是什么,编写代码测试
try: print('start------>') x=1 print(y) except NameError as e: print('变量名没有被定义', e) 将匹配成功的异常的值赋值给as后的变量 打印e则会打印出相应的异常值
输出结果:
变量名没有被定义 name ‘y’ is not defined
3.raise关键字的作用
主动触发一种我们自己指定的异常,也可以说我们给程序加上了一个硬性的条件,若不满足某种情况时就会抛出异常
4.什么时候该使用Try与except
当觉得程序中的某段代码有可能出现某种未知异常时使用
5.finally与else有什么区别,请编写测试代码进行说明
try: l=[1,2] print(l[3]) x = 'a'+1 except TypeError: print('TypeError') else: print('无任何异常') finally: print('最后执行')
else会在try中无任何异常时执行其子代码
finally则是无论有没有异常以及是否捕获异常时都会自动执行其子代码
6.什么是万能异常,内部是如何做到的
BaseException与Exception
BaseException是已经定义好的所有异常类型,而Exception则是继承了BaseException所以也拥有父类的各种属性
7.为了保证程序的健壮性,我们应该在任何抛出异常的地方添加try与except,这种说法对吗?
放屁,我们最终的目的是发现异常并解决异常然后使我们的程序运行起来没有任何异常,异常的结果是用来帮助我们发现并及时的更正错误,而不是要去掩盖与逃避错误,所以我们在使用异常时一定要将自己不太确定是否会出现异常的代码放入Try下面,使用except时也应注意,只要不是所有出现异常的地方都要使用同一段代码解决,就尽量不要使用Exception, 我们更应该使用具体的异常类型类捕捉相应的异常并执行其相应的代码,以便于我们区分具体出现异常的代码并及时做出更正.