自定义异常

2017-07-13  本文已影响0人  流光汐舞

自定义异常类:
因为系统提供的异常类,无法描述我的异常。
我需要自定义一些异常类,来描述我所出现的异常。
例子1

class NameShortException(Exception):
    def __init__(self,msg,num):
        self.msg = msg
        self.num = num
def 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()
运行结果:
请输入姓名:aa
错误信息是:名字的长度至少是3,输入的字符串长度是:2
其它代码。。。。。。。

例子2

class SexException(Exception):
    def __init__(self,msg,value):
        self.msg = msg
        self.value = value
def 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()
运行结果:
请输入性别:x
错误信息是:性别只能输入男或者女,输入的性别是:x
其它代码。。。。。。。

自定义异常的抛出

'''
    以后在mvc框架中,都会有异常处理。在最外层进行处理。
    try:
        #你写的代码
    except Exception as ex:
        将异常信息写到日志文件中
    else:
    finally:
    print('over......')

    所以,你写的代码可以处理异常,也可以不处理。
    一般要写一定的异常处理,为了让代码继续运行。
    还有,可以将异常继续抛出。为了让系统异常日志记录下来。
'''
class SexException(Exception):
    def __init__(self,msg,value):
        self.msg = msg
        self.value = value
def 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)
运行结果:
请输入性别:男
f1...over.....
f2...over.....
main...over.....
上一篇下一篇

猜你喜欢

热点阅读