python raise异常处理

一般最简单的异常处理是try except:

try:
      f = open('test.txt')
except Exception as e:
      print(e)

finally:
      f.close()

自己也可以用raise自定义异常:

class CustomError(Exception):
    def __init__(self, ErrorInfo):
        self.errorinfo = ErrorInfo

    def __str__(self):
        return self.errorinfo

============================================
try:        code.........code        code.........code
        raise CustomError("xxxx")
    except CustomError as e:
        print(e)

自定义异常类需要继承自Exception类。

自定义异常类需要实现__str__方法来定义需要抛出的异常信息。

raise语句主动抛出异常。

捕获异常需要通过try…except 语句,其中"except"语句必须有用相同的异常(或者直接抛出Exception)来抛出类对象。

具体事例如下:

用户自定义异常类型

class TooLongExceptin(Exception):

    def __init__(self,Leng):
        self.leng = Leng
    def __str__(self):
        print("姓名长度是"+str(self.leng)+",超过长度了")

捕捉用户手动抛出的异常,跟捕捉系统异常方式一样

'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:778463939
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
def name_Test():
    try:
        name = input("enter your naem:")
        if len(name)>4:
            raise TooLongExceptin(len(name))
        else :
            print(name)
 
    except TooLongExceptin,e_result:  #e_result是基于TooLongExceptin类创建的实例     print("捕捉到异常了")
        print("打印异常信息:",e_result)
 
#调用函数,执行                                                                    
name_Test()

执行结果如下:

enter your naem:aaafsdf
捕捉到异常了
Traceback (most recent call last):
打印异常信息: 姓名长度是7,超过长度了
姓名长度是7,超过长度了
  File "D:/pythoyworkspace/file_demo/Class_Demo/extion_demo.py", line 16, in name_Test
    raise TooLongExceptin(len(name))
__main__.TooLongExceptin: <exception str() failed>
 
During handling of the above exception, another exception occurred:
 
Traceback (most recent call last):
  File "D:/pythoyworkspace/file_demo/Class_Demo/extion_demo.py", line 26, in <module>
    name_Test()
  File "D:/pythoyworkspace/file_demo/Class_Demo/extion_demo.py", line 22, in name_Test
    print("打印异常信息:",e_result)
TypeError: __str__ returned non-string (type NoneType)
posted @ 2022-10-07 20:29  I'm_江河湖海  阅读(7)  评论(0)    收藏  举报