自定义异常
Python中定义了大量的异常类,虽然这些异常类可以描述编程时出现的绝大部分情况,但仍难以涵盖所有可能出现的异常。Python允许程序开发人员自定义异常。自定义的异常类方法很简单,只需创建一个类,让它继承Exception类或其它异常类即可。
定义一个继承自异常类Exception的自定义异常类CustomError,示例如下:
class CustomError(Exception):
pass # pass表示空语句,是为了保证程序结构的完整性
接下来演示自定义异常类CustomError的用法,示例如下:
try:
pass
raise CustomError("出现错误")
except CustomError as error:
print(error)
上述代码在try语句中通过raise语句引发自定义异常类,同时还为异常指定提示信息。
自定义异常类与普通类一样,也可以具有自己的它属性和方法,但一般情况下不添加或者只为其添加几个用于描述异常的详细信息的属性即可。
例如,定义一个检测用户上传图片格式的异常类,在该异常类的构造方法中调用父类的init()方法并将异常信息作为参数传入,示例如下:
class FileTypeError(Exception):
def ``__init__``(self, err="仅支持jpg/png/bmp格式"):
super().``__init__``(err)
file_name = input("请输入上传图片的名称(包含格式):")
try:
if file_name.split(".")[1] in ["jpg", "png", "bmp"]:
print("上传成功")
else:
raise FileTypeError
except Exception as error:
print(error)
上述代码中,首先定义了一个继承自Exception类的FileTypeError类,然后根据用户输入的文件信息,检测上传的图片是否符合要求,如果符合图片格式要求是则输出“上传成功”提示,否则使用raise语句抛出FileTypeError。在抛出FileTypeError时没有传入参数,所以会使用默认的异常提示信息,最后捕获异常,将异常提示给用户。
运行程序,输入符合图片格式要求的文件名,结果如下所示:
请输入上传图片的名称(包含格式):flower.jpg
上传成功
运行程序,输入不符合图片格式要求的文件名,结果如下所示:
请输入上传图片的名称(包含格式):flower.gif
仅支持jpg/png/bmp格式