美文网首页
python的自定义异常

python的自定义异常

作者: MambaMentality | 来源:发表于2017-07-13 19:46 被阅读0次

    1.抛出自定义的异常

            你可以用raise语句来引发一个异常。异常/错误对象必须有一个名字,且它们应是Error或Exception类的子类。

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


    1.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()


    第二个例子:

    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()


    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 = 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)

    相关文章

      网友评论

          本文标题:python的自定义异常

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