目录
1.自定义异常
在 Python 中,自定义异常通常是通过创建一个新的类来实现的,这个类继承自
Exception
类或其子类。这样,可以为你的异常提供更多的上下文信息,或者创建特定的错误类型以便更清晰地表达错误原因。1.1 自定义异常的步骤
- 创建异常类:定义一个新类,继承自
Exception
类。- 初始化异常信息:可以在自定义异常类中定义构造函数(
__init__
方法),以接受并存储额外的错误信息。- (可选)添加方法:可以定义额外的方法来处理异常相关的信息或逻辑。
1.2 示例
class CustomError(Exception): """自定义异常类""" def __init__(self, message, code=None): super().__init__(message) self.code = code def __str__(self): # 返回自定义的异常信息 return f"{self.args[0]} (Code: {self.code})" # 使用自定义异常 def divide(a, b): if b == 0: raise CustomError("不允许除以零", code=1001) return a / b try: result = divide(10, 0) except CustomError as e: print(f"发生错误: {e}")
打印结果
发生错误: 不允许除以零 (Code: 1001)
示例中:
CustomError
继承自Exception
类,并扩展了初始化方法以接受错误信息和错误代码。divide
函数在除数为零时引发CustomError
。- 异常被捕获并处理,异常信息包括了自定义的错误代码。
2.使用
raise
语句抛出异常
raise
语句用于引发异常。可以使用raise
来引发预定义的异常,也可以引发定义的异常。raise
语句可以单独使用,也可以与try-except
语句结合使用来处理异常。2.1 基本用法
- 引发预定义异常:使用
raise
语句引发标准库中的异常。- 引发自定义异常:使用
raise
语句引发你自己定义的异常类。2.2 示例
# 引发内置异常 def check_positive(value): if value <= 0: raise ValueError("值必须为正") try: check_positive(-1) except ValueError as e: print(f"错误: {e}") # 引发自定义异常 class InvalidInputError(Exception): """自定义异常类""" pass def validate_input(value): if not isinstance(value, int): raise InvalidInputError("输入必须是整数") try: validate_input("string") except InvalidInputError as e: print(f"自定义错误: {e}")
打印结果:
错误: 值必须为正 自定义错误: 输入必须是整数
check_positive
函数检查一个值是否为正数,如果不是,则引发ValueError
。validate_input
函数检查输入类型是否为整数,如果不是,则引发自定义的InvalidInputError
。