📜  python 自定义错误 - Python (1)

📅  最后修改于: 2023-12-03 15:34:13.264000             🧑  作者: Mango

Python 自定义错误

在 Python 中,我们可以使用 raise 语句自定义错误,使得程序在符合条件时抛出这些自定义的错误。

1. 原始错误

首先,我们先看一下 python 中原始的错误类型:

  • AssertionError: 断言语句(assersion)失败
  • AttributeError: 对象没有这个属性
  • EOFError: 遇到了文件结尾(EOF)
  • FloatingPointError: 浮点计算错误
  • ImportError: 导入模块失败
  • IndexError: 索引超出序列范围
  • KeyError: 字典中不存在对应的键值
  • KeyboardInterrupt: 用户中断了程序运行
  • MemoryError: 内存溢出错误
  • NameError: 使用了一个不存在的变量名
  • NotImplementedError: 抽象方法未被实现
  • OSError: 操作系统错误
  • OverflowError: 数值太大导致溢出
  • ReferenceError: 弱引用(Weak Reference)试图访问已经被垃圾回收的对象
  • RuntimeError: 一般的运行时错误
  • StopIteration: 迭代器中没有更多的值
  • SyntaxError: Python语法错误
  • IndentationError: 缩进问题
  • TabError: Tab缩进问题
  • SystemError: 一般的解释器系统错误
  • TypeError: 不同类型间操作引发的错误
  • UnboundLocalError: 局部变量没在定义之前被赋值
  • UnicodeError: 处理Unicode字符串时的错误
  • ValueError: 取值错误
  • ZeroDivisionError: 除数是0
2. 自定义错误类

自定义错误类型的语法如下:

class Error(Exception):
    pass

你可以在类里面定义你自己的 ne 方法。

下面是一个自定义了 TestError 错误类的例子:

class TestError(Exception):
    def __init__(self, message):
        Exception.__init__(self, message)  # 初始化父类
        self.message = message
    
    def __str__(self):
        return self.message

raise TestError("test error message")

当程序执行到 raise TestError("test error message") 的时候,就会抛出一个 TestError 的错误,并且程序运行会被终止。

3. 自定义错误实例

有时候我们需要自定义一个错误实例,而不是一个新的错误类型。我们可以在 raise 语句中传入一个已存在的错误实例。

class TestError(Exception):
    def __init__(self, message):
        Exception.__init__(self, message)  # 初始化父类
        self.message = message
    
    def __str__(self):
        return self.message

error_instance = TestError("test error message")
raise error_instance

当程序执行到 raise error_instance 的时候,就会抛出一个 TestError 的错误,并且程序运行会被终止。

4. 总结

在 Python 中,我们可以通过 raise 语句自定义错误,从而使得程序在符合条件时抛出这些自定义的错误。我们可以自定义一个新的错误类型,也可以自定义一个错误实例。