python基础(十):异常和断言
异常的分类
异常主要分为四大类,所有异常都是类的形式,均继承了BaseException这个类。其中SystemExit为Python的退出异常,KeyboardInterrupt为键盘的中断异常,GeneratorExit为生成器的退出异常。最后一种也是我们通常会遇到的异常Exception普通异常。普通异常包括我们平时会经常遇到的异常类型,如下图所示。
异常捕获
当程序运行过程中发生错误程序就会终止,为了避免这一情况我们需要捕获异常。
try/except
捕获由Python或你引起的异常并恢复
try/finally
无论异常是否发生,执行清理行为
在目前的python版本中except和finally可以同时出现,除此之外还有else语句,其后的语句会在程序未发生异常的时候执行,而finally后的语句无论是否发生异常都会执行。
try: print(aaa)#错误代码 except Exception as e: print("错误信息:",e) >>>错误信息: name 'aaa' is not defined
try: # print(aaa)#错误代码 print('aaa')#正确代码 except Exception as e: print("错误信息:",e) else: print("else执行!!") >>>aaa else执行!!
try: print(aaa)#错误代码 # print('aaa')#正确代码 except Exception as e: print("错误信息:",e) finally: print("finally执行!!") >>>错误信息: name 'aaa' is not defined finally执行!! try: # print(aaa)#错误代码 print('aaa')#正确代码 except Exception as e: print("错误信息:",e) finally: print("finally执行!!") >>>aaa finally执行!!
异常抛出
raise语句会手动在代码中触发异常。其功能主要用于程序的调试。
raise NameError >>> Traceback (most recent call last): File "/home/pyvip/JoePY/home/pyvip/JoePY/test.py", line 58, in <module> raise NameError NameError
断言
assert语句会有条件的在程序代码中触发异常。assert 条件表达式,当条件表达式返回值为True时,不报错。当条件表达式返回值为False时,报错。报错类型为AssertionError。
assert 1>2 >>> Traceback (most recent call last): File "/home/pyvip/JoePY/home/pyvip/JoePY/test.py", line 59, in <module> assert 1>2 AssertionError