Python 异常接管/引出
异常处理
Python 的异常接管和很多程序的都差不多,尤其是Pascal。
常见的异常类型有
1 | ImportError:an import fails 导入失败,一般导入了无效的模块 |
异常的接管
1 | try: |
比如除以0的时候都会抛出一个ZeroDivisionError
异常。
而接管异常处理示例
1 | try: |
又或者留空,默认接管所有异常。
1 | try: |
又或者使用多个except接管多个不同类型的异常。
1 | try: |
以上只是列举了异常类型的小部分
异常类型列表
如果想查看更多异常类型,可以导入exceptions
模块,用dir查看。如下:
1 | In [1]: import exceptions |
对象安全释放
这个和许多语言都有点类似。一般在发生异常的时候,执行就被中断了。而有些被打开的数据有可能会被丢失。
尤其是用open打开文件的时候,很有可能导致内容丢失。所以为了让代码在出现异常的时候,一样能执行特定的代码。比如释放对象,安全关闭文件等。就有了 try ... finally
语句。
1 | try: |
比如常见安全关闭文件
1 | try: |
不过对于安全打开关闭文件,一般更推荐的做法是用with
1 | with open("test.txt","wb") as f: |
提起/引出异常 raise
有时候在处理潜在有问题的代码的时候,你希望主动引出一个异常,可以用raise
语句。
比如引出一个 ValueError
raise ValueError
异常带参数描述异常
raise ValueError('值错误')
断言assert
断言使用,可能都是用于自己调试程序的时候才会用到。
assert 1!=1
当后面表达式不为True的时候,就会引发AssertionError
错误。