美文网首页
自定义异常

自定义异常

作者: 流光汐舞 | 来源:发表于2017-07-13 19:48 被阅读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.....
    

    相关文章

      网友评论

          本文标题:自定义异常

          本文链接:https://www.haomeiwen.com/subject/yddghxtx.html