python的自定义异常

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的自定义异常)