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

 

posted @ 2018-08-14 16:49  AustinJoe  阅读(132)  评论(0编辑  收藏  举报