#尽管内建异常类包括了大部分异常,而且可以满足很多要求,但有时还是要自己创建自己的异常类。比如要精确知道问题的根源,就需要使用自定义异常精确定位问题。可以通过创建一个新exception类拥有自己的异常。异常应该继承自Exception类,可以直接继承,也可以间接继承。
#因为错误就是类,捕获一个错误就是捕获该类的一个实例,因此错误并不是凭空产生的,而是由一些不合理的部分导致的。Python的内建函数会抛出很多类型的错误,我们自己编写的函数也可以抛出错误,如果要抛出错误,那么可以根据需要定义一个错误的类,选择好继承关系,然后用raise语句抛出一个错误的实例。
#例如:
1 #!/usr/bin/python3 2 #-*-coding:UTF-8-*- 3 #异常9.9 4 5 class MyError(Exception): 6 def __init__(self): 7 pass 8 9 def __str__(self): 10 return 'This is self define error' 11 12 def my_error_test(): 13 try: 14 raise MyError() 15 except MyError as e: 16 print('exception info:',e) 17 18 my_error_test()
#执行结果如下:
1 D:Pythonworkspace>python 异常9.9.py 2 exception info: This is self define error
#由程序和执行结果看到,程序正确执行了自定义的异常,并且需要继承Exception类。
#异常最好以Error结尾,一方面贴近标准异常,另一方面便于见名知意。