1.抛出自定义的异常
你可以用raise语句来引发一个异常。异常/错误对象必须有一个名字,且它们应是Error或Exception类的子类。
我们自定义异常的原因是:因为系统提供的异常类,无法描述我的异常。我需要自定义一些异常类,来描述我所出现的异常。
1.1 例子如下
第一个例子:class NameShortException(Exception):
def __init__(self,msg,num):
self.msg = msg
self.num = numdef f():
'''这是输入姓名并判断,如果姓名的长度小于3,抛出NameShortException异常'''
name = input('请输入姓名:')
if len(name.strip())<3:
#手动抛出一个异常对象,以后的代码不再运行
raise NameShortException('名字的长度至少是3',len(name.strip()))
print('f......')def main():
try:
f()
except Exception as ex:
print('错误信息是:%s,输入的字符串长度是:%s'%(ex.msg,ex.num))
print('其它代码。。。。。。。')
main()
第二个例子:class SexException(Exception):
def __init__(self,msg,value):
self.msg = msg
self.value = valuedef f():
sex = input('请输入性别:')
if sex!='男' and sex!='女':
raise SexException('性别只能输入男或者女',sex)
print('f...over.....')def main():
try:
f()
except Exception as ex:
print('错误信息是:%s,输入的性别是:%s'%(ex.msg,ex.value))
print('其它代码。。。。。。。')
main()
1.2 注意事项
以后在mvc框架中,都会有异常处理。在最外层进行处理。try:
#你写的代码
except Exception as ex:
#将异常信息写到日志文件中
else:
finally:
print('over......')
所以,你写的代码可以处理异常,也可以不处理。
一般要写一定的异常处理,为了让代码继续运行。
还有,可以将异常继续抛出。为了让系统异常日志记录下来。
例如:class SexException(Exception):
def __init__(self,msg,value):
self.msg = msg
self.value = valuedef f1():
sex = input('请输入性别:')
if sex!='男' and sex!='女':
raise SexException('性别只能输入男或者女',sex)
print('f1...over.....')def f2():
#num = 1/0 # raise ZeroxxxError('除以0 了,不行')
f1()
print('f2...over.....')def main():
try:
f2()
except Exception as ex:
#print(ex.msg)
raise
print('main...over.....')#框架
try:
#你的代码
main()
except Exception as ex:
#将错误信息写到文件中记录下来,打印模拟记录
print(ex)