Python常见异常类型说明及触发代码示例

在Python中,异常是程序执行期间发生的错误或意外情况。当解释器遇到异常时,会停止程序的正常执行,并在控制台输出异常的相关信息。

Python中有许多不同的异常类型,每个异常类型表示不同的错误或意外情况。 下面是一些常见的Python异常类型及其说明:

  1. AssertionError:断言语句(assert)失败
  2. AttributeError:尝试访问一个对象没有的属性
  3. EOFError:没有内建输入,到达了EOF标记
  4. Exception:常规错误的基类
  5. ImportError:导入模块失败的时候触发
  6. IndexError:索引超出序列的范围
  7. KeyError:字典中查找一个不存在的关键字
  8. KeyboardInterrupt:用户中断执行
  9. MemoryError:内存溢出(可通过删除对象释放内存)
  10. NameError:尝试访问一个不存在的变量
  11. OSError:操作系统产生的异常(例如打开一个不存在的文件)
  12. OverflowError:数值运算超出最大限制
  13. RecursionError:超出最大递归深度
  14. RuntimeError:一般的运行时错误
  15. StopIteration:迭代器没有更多的值
  16. SyntaxError:Python语法错误
  17. IndentationError:缩进错误
  18. TabError:Tab和空格混用
  19. SystemError:Python编译器系统错误
  20. SystemExit:Python编译器进程被关闭
  21. TypeError:不同类型间的无效操作
  22. UnboundLocalError:访问未初始化的本地变量
  23. UnicodeError:Unicode相关的异常
  24. ValueError:不同类型间的无效操作
  25. ZeroDivisionError:除数为零

接下来我们将给出不同异常的触发代码示例

  1. AssertionError:断言语句(assert)失败。

    触发代码:

    assert 1 == 2, "1 不等于 2"

  2. AttributeError:尝试访问一个对象没有的属性。

    触发代码:

    class MyClass:
        attr = 123
    
    m = MyClass()
    print(m.nonexistent_attr)
    
  3. EOFError:没有内建输入,到达了EOF标记。

    触发代码:

    input()
    # 通过键盘输入一些字符,然后按下 Ctrl-Z(Windows)或 Ctrl-D(Unix/Linux)即可触发
    
  4. ImportError:导入模块失败的时候触发。

    触发代码:

    import nonexistent_module
    
  5. IndexError:索引超出序列的范围。

    触发代码:

    lst = [1, 2, 3]
    print(lst[3])
    
  6. KeyError:字典中查找一个不存在的关键字。

    触发代码:

    d = {'a': 1, 'b': 2}
    print(d['c'])
    
  7. KeyboardInterrupt:用户中断执行。

    触发代码:在程序执行过程中按下 Ctrl-C。

  8. MemoryError:内存溢出(可通过删除对象释放内存)。

    触发代码:

    lst = [1] * 1024 ** 3 # 创建一个长度为 1GB 的列表
    
  9. NameError:尝试访问一个不存在的变量。

    触发代码:

    print(nonexistent_var)
    
  10. NotImplementedError:尝试调用一个抽象方法,但是子类没有重写它。

    触发代码:

    from abc import ABC, abstractmethod
    
    class MyBaseClass(ABC):
        @abstractmethod
        def my_abstract_method(self):
            pass
    
    class MySubClass(MyBaseClass):
        pass
    
    obj = MySubClass()
    obj.my_abstract_method()
    
  11. OSError:操作系统产生的异常(例如打开一个不存在的文件)。

    触发代码:

    with open("nonexistent_file.txt", "r") as f:
        pass
    
  12. OverflowError:数值运算超出最大限制。

    触发代码:

    print(2 ** 1000000)
    
  13. RecursionError:超出最大递归深度。

    触发代码:

    def my_func():
        my_func()
    
    my_func()
    
  14. RuntimeError:一般的运行时错误。

    触发代码:

    raise RuntimeError("My runtime error")
    
  15. StopIteration:迭代器没有更多的值。

    触发代码:

    my_iter = iter([1, 2, 3])
    print(next(my_iter))
    print(next(my_iter))
    print(next(my_iter))
    print(next(my_iter))
    
  16. SyntaxError:Python语法错误。

    触发代码:

    eval("1 + ")
    
  17. IndentationError:缩进错误。

    触发代码:

    if True:
    print("Hello, world!")
    
  18. TabError:Tab和空格混用。

    触发代码:

    def my_func():
        if True:
            print("Hello, world!")
    	   # 上面这一行的前面有一个 Tab 和一个空格,会触发 TabError
    
  19. SystemError:Python编译器系统错误。

    触发代码:

    import sys
    
    sys._getframe(-1)
    
  20. SystemExit:Python编译器进程被关闭。

    触发代码:

    import sys
    
    sys._getframe(-1)
    
  21. TypeError:不同类型间的无效操作。

    触发代码:

    print(1 + "2")
    
  22. UnboundLocalError:访问未初始化的本地变量。

    触发代码:

    def my_func():
        print(x)
        x = 1
    
    my_func()
    
  23. UnicodeError:Unicode相关的异常。

    触发代码:

    s = "\u203D"
    s.encode("ascii")
    
  24. ValueError:传入参数的类型正确但是值错误。

    触发代码:

    int("abc")
    
  25. ZeroDivisionError:除数为零。

    触发代码:

    print(1 / 0)
    

以上是Python中所有标准异常类型及其解释以及触发代码。开发过程中需要根据具体情况选择处理异常,并使用try-except语句来捕获并处理异常,从而保证程序的健壮性和稳定性。

おすすめ

転載: blog.csdn.net/weixin_40025666/article/details/131120332