什么是异常与异常处理
异常的语法结构
try:
<代码块1> #被try关键字检查并保护的业务代码
except <异常类型>:
<代码块2> #代码块1出现错误后执行的代码块
异常的语法:
a = 1 / 0
print(a) # a=1/0 ZeroDivisionError: division by zero
try:
a = 1 / 0
except:
print(‘0不能被整除‘)#输出到控制台
print(‘程序继续执行‘)#输出到控制台
捕获通用异常
无法确定是哪种异常的情况下使用的捕获方法
try:
<代码块>
except Exception as e:
<异常代码块>
try:
a = 1 / 0
except Exception as e:
print("try代码块中的语句出现错误,具体错误是:{}".format(e)) # try代码块中的语句出现错误,具体错误是:division by zero
捕获具体异常
捕获多个异常1
try:
a = 1 / 0
except ZeroDivisionError as e:
print("try代码块中的语句出现错误,具体错误是:{}".format(e)) # try代码块中的语句出现错误,具体错误是:division by zero
except Exception as e:
print("try代码块中的语句出现错误,具体错误是:{}".format(e)) # try代码块中的语句出现错误,具体错误是:division by zero
捕获多个异常2
try:
a = 1 / 0
except (ZeroDivisionError, Exception) as e:
print("try代码块中的语句出现错误,具体错误是:{}".format(e)) # try代码块中的语句出现错误,具体错误是:division by zero
异常名称 | 说明 |
---|---|
Exception | 通用的异常类型(基类) |
ZerorivisionError | 不能整除0 |
AttributeError | 对象没有这个属性 |
IOError | 输入输出操作失败 |
IndexError | 没有当前的索引 |
异常名称 | 说明 |
---|---|
KeyError | 没有这个键值(key) |
NameError | 没有这个变量(未初始化对象) |
SyntaxError | Python语法错误 |
SystemError | 解释器的系统错误 |
ValueError | 传入的参数错误 |
finally的功能
finally的用法
try:
<代码块1>
except:
<代码块2>
finally:
<代码块3>
finally的历史
将信息以报错的形式抛出
语法结构
继承基类---Exception
在构造函数中定义的错误信息
示例代码:
class NewError(Exception):
def __init__(self, message):
self.message = message
def test():
raise NewError(‘this is a bug‘)
def test1():
try:
test()
except Exception as e:
print(e)
test1() # this is a bug
用于判断一个表达式,在表达式条件为false的时候触发异常。
语法格式
示例代码:
assert 1 > 2
‘‘‘
assert 1>2
AssertionError
‘‘‘
原文:https://www.cnblogs.com/gockk/p/15247279.html