Zhonghui

每个不曾起舞的日子,都是对生命的辜负

User Tools

Site Tools


程序:python:异常

Python异常处理

需要以下关键字try/raise/except/else/finally
基本思想和C++也是一样的,有细节不同


异常种类

  • BaseException:所有异常的基类
  • SystemExit:解释器请求退出
  • KeyboardInterrupt:用户中断执行(通常是输入^C)
  • Exception:常规错误的基类
  • StopIteration:迭代器没有更多的值
  • GeneratorExit:生成器(generator)发生异常来通知退出
  • StandardError:所有的内建标准异常的基类
  • ArithmeticError:所有数值计算错误的基类
  • FloatingPointError:浮点计算错误
  • OverflowError:数值运算超出最大限制
  • ZeroDivisionError:除(或取模)零(所有数据类型)
  • AssertionError:断言语句失败
  • AttributeError:对象没有这个属性
  • EOFError:没有内建输入,到达EOF标记
  • EnvironmentError:操作系统错误的基类
  • IOError:输入/输出操作失败
  • OSError:操作系统错误
  • WindowsError:系统调用失败
  • ImportError:导入模块/对象失败
  • LookupError:无效数据查询的基类
  • IndexError:序列中没有此索引(index)
  • KeyError:映射中没有这个键
  • MemoryError:内存溢出错误(对于Python解释器不是致命的)
  • NameError:未声明/初始化对象(没有属性)
  • UnboundLocalError:访问未初始化的本地变量
  • ReferenceError:弱引用(Weakreference)试图访问已经垃圾回收了的对象
  • RuntimeError:一般的运行时错误
  • NotImplementedError:尚未实现的方法
  • SyntaxError:Python语法错误
  • IndentationError:缩进错误
  • TabError:Tab和空格混用
  • SystemError:一般的解释器系统错误
  • TypeError:对类型无效的操作
  • ValueError:传入无效的参数
  • UnicodeError:Unicode相关的错误
  • UnicodeDecodeError:Unicode解码时的错误
  • UnicodeEncodeError:Unicode编码时错误
  • UnicodeTranslateError:Unicode转换时错误
  • Warning:警告的基类
  • DeprecationWarning:关于被弃用的特征的警告
  • FutureWarning:关于构造将来语义会有改变的警告
  • OverflowWarning:旧的关于自动提升为长整型(long)的警告
  • PendingDeprecationWarning:关于特性将会被废弃的警告
  • RuntimeWarning:可疑的运行时行为(runtimebehavior)的警告
  • SyntaxWarning:可疑的语法的警告
  • UserWarning:用户代码生成的警告

示例代码

#Test on Python3.8 Windows
 
try:
    #Do Something
 
    #Error:只能触发BaseException的子类
    #raise int(1)
 
    #触发异常可以带参数
    #能带什么参数 就要看文档了
    raise OSError('Self Raised')
 
#Error:只能捕获BaseException的子类
#except int:
 
#捕获某一个特定类型的异常
except ImportError:
    print('ImportError Block')
 
#捕获某一个特定类型的异常并将其作为参数
except OSError as message:
    print('OSError',message)
 
#捕获所有的异常
except:
    print('General Block')
 
#如果没有发生异常
#当有异常的时候 即使except不能处理 也不会执行else
else:
    print('Else Block')
 
#不管是否发生异常都会执行的
#即使发生了异常 没有except可以处理
#也会先执行Final后 再找上层的except
finally:
    print('Final Block')
/var/www/DokuWikiStick/dokuwiki/data/pages/程序/python/异常.txt · Last modified: 2022/03/27 15:00 (external edit)