1、Python中自定义异常
Python中有许多内置的异常类,内置的异常类可以满足大部分需求,但还是会有Python内建的异常无法满足用户需求的时候,幸好Python也提供了自定义异常的方法。自定义异常允许开发者针对特定的错误情况创建有意义的错误消息,并且可以提供更详细的错误处理机制。
自定义异常应该继承自Exception类,可以是直接继承,也可以是间接继承。例如:
动手练一练:
# 从Exception类派生出自定义异常类
class MyException(Exception): # 继承自Exception类
def __init__(self, message, code):
super().__init__(message)
self.code = code
def get_error(self):
return self.code
try:
raise MyException("自定义异常", 200)
except MyException as e: # 捕获自定义异常
print(e) # 输出 自定义异常
print("错误代码:", e.get_error()) # 输出 错误代码: 200
执行以上代码,输出结果为:
自定义异常
错误代码: 200
上面的例子中,MyException是一个自定义的异常类,它有一个构造函数,接受message和code两个参数。通过调用super().init(self.message),我们确保了父类的构造函数也被正确调用,才可以将异常消息传递给了父类Exception。在try块中,我们使用raise语句来抛出一个MyException的实例。当异常被抛出时,except块会捕获到这个异常对象MyException,再将这个异常对象利用“as”语句赋值给一个变量“e”,并利用这个变量来获取异常信息。
使用自定义异常可以使代码更加清晰,并且能够更好地处理特定的错误情况。自定义异常类可以包含更多的逻辑,例如,可以添加更多的属性来保存关于异常的额外信息,或者定义其他的方法来提供关于异常的更多信息。自定义异常类应该遵循Python的命名约定,通常以Error结尾,以区别于内置异常和其他类。
2、Python内置异常类型汇总
Python是一种功能强大且易于学习的编程语言,被广泛应用于各种领域。然而,尽管Python的语法相对简单,但在实际调试程序代码过程中,开发者仍然会遇到形形色色的错误。Python常见的内置异常汇总如下:
ArithmeticError:数值计算错误。
AssertionError:断言语句(assert)失败。
AttributeError:尝试访问未知的对象属性引发的错误。
BaseException:所有异常的基础类,它包含了所有异常的基本特征和行为。
DeprecationWarning:弃用警告,它表示某个特性或函数已经被弃用,可能在未来的Python版本中会被删除。
EnvironmentError:操作系统错误的基类,用于表示与环境相关的错误,包括文件系统、进程、线程等。
EOFError:内建异常,表示在输入过程中遇到了意外的文件结束。
Exception:常规错误的基类。
FloatingPointError:浮点计算错误。
FutureWarning:有关已弃用功能的警告的基类,用于指示某些代码在将来的Python版本中可能会发生变化。
GeneratorExit:生成器(generator)发生异常来通知退出。
ImportError:导入模块/对象失败。
IndentationError:缩进错误。
IndexError:序列中没有此索引(index),也就是索引超出序列范围引发的错误。
IOError:输入/输出操作失败,指在进行输入输出操作时,出现了输入输出错误。
KeyboardInterrupt:当用户在程序运行时,按下“Ctrl+C”组合键触发的异常。
KeyError:映射中没有这个键,表示在字典或集合中使用了一个不存在的键。
LookupError:无效数据查询的基类。
MemoryError:内存溢出错误,表示程序无法分配足够的内存来完成其任务。
NameError:未声明、初始化对象,通常指的是变量或函数名未定义。。
NotImplementedError:表示一种未实现的方法或操作。
OSError:操作系统产生的异常,常常由于操作系统资源不足或权限不足引起。
OverflowError:数值运算超出最大限制,也就是超出了某些数据类型的范围。
OverflowWarning:旧的关于自动提升为长整型(long)的警告。
PendingDeprecationWarning:关于特性将会被废弃的警告。
ReferenceError:弱引用(Weak reference)试图访问已经垃圾回收了的对象。
RuntimeError:用于表示运行时错误。
RuntimeWarning:可疑的运行时行为(runtime behavior)的警告。
StandardError:所有的内建标准异常的基类。
StopIteration:迭代器没有更多的值,表示迭代器已经到达了可迭代对象的末尾,不能再继续迭代。
SyntaxError:在Python代码中出现语法错误。
SyntaxWarning:可疑的语法的警告。
SystemError:一般的Python解释器系统错误。
SystemExit:解释器请求退出。
TabError:Tab键和空格键混用。
TypeError:对类型无效的操作,它表示程序在运行时发生了类型错误。
UnboundLocalError:访问未初始化的本地变量,通常是由于在函数或方法中使用未定义的本地变量而引起的。
UnicodeDecodeError:Unicode解码时的错误,它表示在将字节数据解码为Unicode字符串时发生了错误。。
UnicodeEncodeError:Unicode编码时错误。
UnicodeError:Unicode相关的错误,当读取或操作字符串时,如果字符串的编码格式与程序中使用的编码格式不匹配引发的错误。
UnicodeTranslateError:Unicode转换错误导致的异常。
UserWarning:用户代码生成的警告。
ValueError:传入无效的参数,通常在函数或操作接受到类型错误或不正确的值时抛出的错误。
Warning:所有警告类别的基类。
WindowsError:系统调用失败。
ZeroDivisionError:除数为零“0”引发的错误。