1.try...except...else...finally结构,以计算除法为例,并通过with结构与调用traceback模块的方法将异常信息写入名为a的txt类型文件(文件初始为空)中:
import traceback
try:
a = input('请输入被除数:')
b = input('请输入除数')
c = float(a)/float(b)
except ZeroDivisionError:
print('除数不能为0!')
with open('d:/a.txt','a') as f:
traceback.print_exc(file = f)
except ValueError:
print('格式异常,请输入数字')
with open('d:/a.txt','a') as f:
traceback.print_exc(file = f)
except BaseException as e:
print(e)
with open('d:/a.txt','a') as f:
traceback.print_exc(file = f)
else:
print('输入格式正确,计算结果为:',c)
finally:
print('program ending')
print('程序结束')
测试:
(1)测试值错误的写入
(2)测试零除错误的写入
红框内为新写入的零除错误的追溯信息
2.自定义错误类,例如:AgeError,输入年龄小于0岁或大于150岁时就报错
class AgeError(Exception):
def __init__(self,errorInfo):
Exception.__init__(self)
self.errorInfo = errorInfo
def __str__(self):
return '错误年龄为{0}'.format(self.errorInfo)
##测试##
if __name__ == '__main__':
age = int(input('请输入年龄:(0-150岁)'))
if age<0 or age>150:
raise AgeError(age)
else:
print('年龄输入合法,年龄为:',age)
(1)出现异常,调用自定义错误类AgeError的情况:
(2)未出现异常,正常输入年龄的情况: