python 自定义异常类_python的自定义异常

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)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值