异常 exception (基础)
什么是错误
错误是指由于逻辑或语法等导致一个程序无法正常执行
错误的特点:
有些错误无法预知
什么是异常:
异常是程序出错时标识的一种状态
当异常发生时,程序不会再向下执行,而转去调用此函数的地方待处理此错误并恢复为正常状态
异常的作用:
1. 通知上层的调用者,有错误产生需要处理
2. 用作信号传递
try 语句的两种语法:
try-except语句
try-finally语句
try-except语法:
try:
可能触发异常的语句...
except 错误类型1 [as 变量1]
异常处理语句1
except 错误类型2 [as 变量2]
异常处理语句2
except (错误类型3, 错误类型4) [as 变量3]
异常处理语句3
...
except:
其它异常处理语句
else:
未发生异常处理语句
finally:
最终语句
作用:
捕获异常,将程序转为正常状态
语法说明:
as 子句是用于绑定错误对象的变量,可以省略
except 子句可以有一个或多个,但至少要有一个
else 子句最多只能有一个.也可以省略不写
finally 子句最多只能有一个,也可以省略不写
else 子句在没有出现异常时,子句的语句才被执行
finally 子句在无论是否出现异常时都会被执行
Python中的错误类型:
>>> help(__builtins__)
ZeroDivisionError 除(或取模)零
StopIteration 迭代器没有更多的值
IOError 输入/输出错误
ImportError 导入模块失败
IndexError 序列中没有此索引
IndentationError 缩进错误
ValueError 传入无效的参数
AssertionError 断言语句失败
NameError 未声明或初始化对象
AttributeError 对象没有这个属性
try语句的嵌套:
try-finally 语法
try:
可能触发异常的语句
finally:
最终子句
语法说明:
finally 子句不可以省略
此语句中一定不存在 except 子句
作用:
1. 通常try/finally语句做触发异常时必须要做的事情
无论异常是否发生,finally 子句都会被执行
2. try-finally 语句不会改变程序的(正常/异常)状态
raise 语句
作用:
生成一个错误,让程序进入异常状态
语法:
raise 异常类型
或
raise 异常对象
assert 语句 (断言语句)
assert 语句的语法:
assert 真值表达式, 错误数据(通常是字符串)
作用:
当真值表达式为False时,用错误数据创建一个AssertionError类型的错误,并进入异常状态
等同于:
if 真值表达式 == False:
raise AssertionError(错误数据)
什么是错误
错误是指由于逻辑或语法等导致一个程序无法正常执行
错误的特点:
有些错误无法预知
什么是异常:
异常是程序出错时标识的一种状态
当异常发生时,程序不会再向下执行,而转去调用此函数的地方待处理此错误并恢复为正常状态
异常的作用:
1. 通知上层的调用者,有错误产生需要处理
2. 用作信号传递
try 语句的两种语法:
try-except语句
try-finally语句
try-except语法:
try:
可能触发异常的语句...
except 错误类型1 [as 变量1]
异常处理语句1
except 错误类型2 [as 变量2]
异常处理语句2
except (错误类型3, 错误类型4) [as 变量3]
异常处理语句3
...
except:
其它异常处理语句
else:
未发生异常处理语句
finally:
最终语句
作用:
捕获异常,将程序转为正常状态
语法说明:
as 子句是用于绑定错误对象的变量,可以省略
except 子句可以有一个或多个,但至少要有一个
else 子句最多只能有一个.也可以省略不写
finally 子句最多只能有一个,也可以省略不写
else 子句在没有出现异常时,子句的语句才被执行
finally 子句在无论是否出现异常时都会被执行
Python中的错误类型:
>>> help(__builtins__)
ZeroDivisionError 除(或取模)零
StopIteration 迭代器没有更多的值
IOError 输入/输出错误
ImportError 导入模块失败
IndexError 序列中没有此索引
IndentationError 缩进错误
ValueError 传入无效的参数
AssertionError 断言语句失败
NameError 未声明或初始化对象
AttributeError 对象没有这个属性
try语句的嵌套:
try-finally 语法
try:
可能触发异常的语句
finally:
最终子句
语法说明:
finally 子句不可以省略
此语句中一定不存在 except 子句
作用:
1. 通常try/finally语句做触发异常时必须要做的事情
无论异常是否发生,finally 子句都会被执行
2. try-finally 语句不会改变程序的(正常/异常)状态
raise 语句
作用:
生成一个错误,让程序进入异常状态
语法:
raise 异常类型
或
raise 异常对象
assert 语句 (断言语句)
assert 语句的语法:
assert 真值表达式, 错误数据(通常是字符串)
作用:
当真值表达式为False时,用错误数据创建一个AssertionError类型的错误,并进入异常状态
等同于:
if 真值表达式 == False:
raise AssertionError(错误数据)