Python异常处理

基本异常处理python

  举个简单的例子ide

num = input(">>>")
try:
    res = int(num)
    print(res)
except Exception as e:
    # Exception是一个类,若是上面的异常出现,建立了一个e的异常对象,e封装了全部异常的信息
    print(e)
    print("数据类型转换失败")
基本异常处理

 异常分类post

  python中的异常种类很是多,每一个异常专门用于处理某一项异常!!!编码

  Exception是全部错误类的基类(多是爸爸,也多是爷爷)   并称之为万能异常,它能捕获任意异常spa

 1 AttributeError 试图访问一个对象没有的树形,好比foo.x,可是foo没有属性x
 2 IOError 输入/输出异常;基本上是没法打开文件
 3 ImportError 没法引入模块或包;基本上是路径问题或名称错误
 4 IndentationError 语法错误(的子类) ;代码没有正确对齐
 5 IndexError 下标索引超出序列边界,好比当x只有三个元素,却试图访问x[5]
 6 KeyError 试图访问字典里不存在的键
 7 KeyboardInterrupt Ctrl+C被按下
 8 NameError 使用一个还未被赋予对象的变量
 9 SyntaxError Python代码非法,代码不能编译(我的认为这是语法错误,写错了)
10 TypeError 传入对象类型与要求的不符合
11 UnboundLocalError 试图访问一个还未被设置的局部变量,基本上是因为另有一个同名的全局变量,
12 致使你觉得正在访问它
13 ValueError 传入一个调用者不指望的值,即便值的类型是正确的
经常使用异常
ArithmeticError
AssertionError
AttributeError
BaseException
BufferError
BytesWarning
DeprecationWarning
EnvironmentError
EOFError
Exception
FloatingPointError
FutureWarning
GeneratorExit
ImportError
ImportWarning
IndentationError
IndexError
IOError
KeyboardInterrupt
KeyError
LookupError
MemoryError
NameError
NotImplementedError
OSError
OverflowError
PendingDeprecationWarning
ReferenceError
RuntimeError
RuntimeWarning
StandardError
StopIteration
SyntaxError
SyntaxWarning
SystemError
SystemExit
TabError
TypeError
UnboundLocalError
UnicodeDecodeError
UnicodeEncodeError
UnicodeError
UnicodeTranslateError
UnicodeWarning
UserWarning
ValueError
Warning
ZeroDivisionError
更多异常
dic = {'k1':'v1'}
try:
    dic['k20']
except KeyError as e:
    print(e)
实例:KeyError
s1 = 'hello'
try:
    int(s1)
except ValueError as e:
    print(e)
实例:ValueError
dic = ["wupeiqi", 'alex']
try:
    dic[10]
except IndexError as e:
    print(e)

list index out of range
实例:IndexError

python标准异常

异常名称 描述
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 弱引用(Weak reference)试图访问已经垃圾回收了的对象
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 可疑的运行时行为(runtime behavior)的警告
SyntaxWarning 可疑的语法的警告
UserWarning 用户代码生成的警告

try的工做原理是,当开始一个try语句后,python就在当前程序的上下文中做标记,这样当异常出现时就能够回到这里,try子句先执行,接下来会发生什么依赖于执行时是否出现异常。操作系统

  • 若是当try后的语句执行时发生异常,python就跳回到try并执行第一个匹配该异常的except子句,异常处理完毕,控制流就经过整个try语句(除非在处理异常时又引起新的异常)。
  • 若是在try后的语句里发生了异常,却没有匹配的except子句,异常将被递交到上层的try,或者到程序的最上层(这样将结束程序,并打印缺省的出错信息)。
  • 若是在try子句执行时没有发生异常,python将执行else语句后的语句(若是有else的话),而后控制流经过整个try语句。

try-finally 语句

try-finally 语句不管是否发生异常都将执行最后的代码。code

触发异常

能够使用raise语句本身触发异常对象

用户自定义异常

经过建立一个新的异常类,程序能够命名它们本身的异常。异常应该是典型的继承自Exception类,经过直接或间接的方式。blog

断言继承

?
1
2
3
4
5
# assert 条件
  
assert 1 = = 1
  
assert 1 = = 2
相关文章
相关标签/搜索