12 异常
一、异常
1、常见异常举例
二、异常处理
try:
print("ok") #ok
print(a) # a 未定义,报错NameError(不适用try程序终止)
except NameError:
print("NameError") # NameError
try:
print("ok") #ok
print(a) # a 未定义,报错NameError
except NameError as err:
print(err) # name 'a' is not defined
try:
print("ok") #ok
print(a) # a 未定义,报错NameError
except Exception as err:
print(err) # name 'a' is not defined
# 注意事项:
#
# 1.
# try 下面放可能出错的代码
#
# 2. except try下面的代码出错后,会执行except下面的代码
#
# 3. else try下面代码没有错误, 执行else下面的代码
#
# 4. finally 不管try下面的代码有没有出错,始终都会执行
raise:程序出现错误:python 会自动触发异常,raise引发异常
# 异常处理
# 自动抛出异常
# raise:程序出现错误,python会自动触发异常,raise引发异常
# 异常处理
try:
raise TypeError("主动抛出类型错误")
except FileNotFoundError:
print("FileNotFoundError")
except ZeroDivisionError:
print("ZeroDivisionError")
except Exception:
print("其他普通类型")
# raise实际应用
def func(name):
if name == "nima":
raise TypeError("黑名单")
try:
func("nima")
except Exception as err:
print(err) # 黑名单
自定义异常类
class Myerror(Exception):
pass
def func(name):
if name == 1:
raise Myerror("错了朋友")
try:
func(1)
except Myerror as err:
print(err) # 错了朋友
三、断言 assert
# 2、断言语句是将调试断言插入程序的一种便捷方式
#
# assert 的语法规则是:
#
# 表达式返回 True 不报错
#
# 表达式返回 False 报错 报 AssertionError
a = 1
b = 2
a == b # 返回False
assert a==b # AssertionError
a = 1
b = 1
a == b # 返回True
assert a==b # 不报错