十 Python 异常捕获
介绍:
用于捕获代码运行中出现的错误,保证代码的流畅度
try:
正常程序
except:
抛出错误时执行的代码块
示例:
- 常规
while True:
try:
ipt = input("请输入:")
i = float(ipt)
except Exception as e: # e = Exception()
'''
e 是 Exception对象,对象中封装了错误信息
上述代码如果出错,自动执行当前块的内容
'''
print(e)
i = 1
print(i)
- Python中查看所有错误信息
help(__builtin__)
- 异常捕获2
示例:
try:
int('a')
except ValueError as e: # e = ValueError()
print("valueError",e)
except ZeroDivisionError as e:
print("ZeroDivisionError",e)
except Exception as e:
print(e)
else:
print("没有异常,请执行我")
finally:
print("不管出不出错,都要执行")
tips:
as 能够用来重命名
以上细分的错误都是Exception的子类
细分错误的作用:为了一个种类的错误记录日志
为了避免程序最后报错,在最后可以用到Exception捕获异常
如果有错,执行except里的代码块
如果没有错误,执行else
finally:不管处不出错,肯定执行
- 自定义异常 raise Excepting(msg)
try:
raise Exception("我生气了")
except Exception as e:
print(e)
def demo():
return False
def demo1():
try:
int('a')
res = demo()
if not res:
#打开文件,写日志
raise Exception("demo中有异常")
except Exception as e:
print(e)
tips:
- 要有自定义模块
- 捕获自定义的异常
class OldAmyError(Exception):
def __init__(self,msg):
self.error_info = msg
def __str__(self):
return self.error_info
# err = OldAmyError("咖啡说我是胖子")
# print(err)
try:
# 抛出错误信息
raise OldAmyError("咖啡说我是胖子") # err = OldAmyError("咖啡说我是胖子")
except OldAmyError as err:
print(err)
- assert 条件
tips:
如果条件成立,代码继续往下执行
如果条件不成立,直接抛出异常
强制用户服从,可捕获,但是不捕获
print(123)
assert 2.0 == 2 # AssertionError
print(456)