1.语法格式
a = input("请输入被除数")
b = input("请输入除数")
try:
a=int(a)
b=int(b)
c = a/b
print("商为:{0}".format(c))
except ValueError:#按顺序执行,这个异常不对就判断下一个,如果对了,就不再判断
print("数据类型有错误")
except ZeroDivisionError:
print("除数不能是0")
except Exception:#这里相当于拦截所有的异常
print("其他不知道的错误")
else:
print("没有异常")#没有异常才执行
finally:
print("最终执行")#有没有异常都执行
2.捕获多个异常
#还可以使用这样的格式: except(异常1,异常2,异常3。。。) as e:
#使用元组储存多个异常的时候,多个异常之间没有顺序要求
a = input("请输入被除数")
b = input("请输入除数")
try:
a=int(a)
b=int(b)
c = a/b
print("商为:{0}".format(c))
except (Exception,ValueError,ZeroDivisionError) as e:
print("错误的类型是:{0}".format(type(e)))
print("错误的信息是:{0}".format(e.args))
3.自定义异常
#自定义异常,并捕获异常的实例:
#首先定义一个异常类,继承异常类,就是一个异常类
class GenderException(Exception):
def __init__(self):
super().__init__()
self.err_msg = "性别只能设置男或者女"
#抛出异常: raise 异常对象
raise GenderException()
#执行结果
'''
Traceback (most recent call last):
File "C:/mycode/djangoProject/a.py", line 10, in <module>
raise GenderException()
__main__.GenderException
'''
4.异常信息输出
import traceback
'''使用这个traceback可以将异常信息输出到指定的文件中'''
try:
n = 1/0
except:
info = traceback.format_exc() # 获取异常信息 类型是str
print(info) #打印异常信息
with open(r"C:\Users\Administrator\Desktop\新建文本文档.txt","a") as f:
f.write(info) #将异常信息输出到文件中
5.finally返回值
如果finally没有返回值,函数会返回except的返回值
def func():
try:
raise Exception
except:
print('出错后执行')
return 'except'
finally:
print("最终执行")
#return 'finally'
#如果finally没有返回值,函数会返回except的返回值
print(func()) # except
如果finally有返回值,函数都会返回finally的返回值
def func():
try:
raise Exception
except:
print('出错后执行')
return 'except'
finally:
print("最终执行")
return 'finally'
#如果finally有返回值,函数都会返回finally的返回值
print(func()) # finally