一、异常处理 Exception
1.异常:
就是不正常的情况,程序开发过程中错误和BUG都是补充正常的情况
2.异常发生的后果:
引发程序崩溃
3.处理异常的方式
try-except:异常捕获处理
4.异常处理的目的:
提高代码的稳定性和健壮性
二、Python使用try处理的语法结构
含义: try/except语句用来检测try语句块中的错误,从而让except语句捕获异常信息并处理。
如果你不想在异常发生时结束你的程序,只需在try里捕获它。
1.try:
# 可能发生异常的代码
2.except:
# 当发现异常后,代码会立刻进入except中来
# 这个处理代码
使用别名接收异常
正常捕获
Except可以多次使用,也可用一次捕获所有,如上图的ValueError继承了except,except继承了baseexcept,baseexcept又继承了object等。(多态方式)
一般异常捕获遵循先小后大的原则,
3.else:
# 表示程序正常执行后,会进入这儿
##finally(必须执行)
注意:在函数中遇到return,并且函数存在finally语句块,那么函数必须先执行完finally,之后才会return(一般函数 return 必须立刻返回)
三、以下是常见的一些异常提示:
AttributeError: 试图访问一个对象没有的树形,比如foo.x,但是foo没有属性x
IOError :输入/输出异常;基本上是无法打开文件
ImportError: 无法引入模块或包;基本上是路径问题或名称错误
IndentationError :语法错误(的子类) ;代码没有正确对齐
IndexError :下标索引超出序列边界,比如当x只有三个元素,却试图访问x[5]
KeyError :试图访问字典里不存在的键
KeyboardInterrupt: Ctrl+C被按下
NameError :使用一个还未被赋予对象的变量
SyntaxError Python代码非法,代码不能编译(语法错误,写错了)
TypeError :传入对象类型与要求的不符合
UnboundLocalError :试图访问一个还未被设置的局部变量,基本上是由于另有一个同名的全局变量,导致你以为正在访问 它。
ValueError 传入一个调用者不期望的值,即使值的类型是正确的