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

简介: 开发过程中需要根据具体情况选择处理异常,并使用try-except语句来捕获并处理异常,从而保证程序的健壮性和稳定性。在Python中,异常是程序执行期间发生的错误或意外情况。当解释器遇到异常时,会停止程序的正常执行,并在控制台输出异常的相关信息。Python中有许多不同的异常类型,每个异常类型表示不同的错误或意外情况。OSError:操作系统产生的异常(例如打开一个不存在的文件)。AttributeError:尝试访问一个对象没有的属性。UnicodeError:Unicode相关的异常。

 在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:除数为零

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

AssertionError:断言语句(assert)失败。
触发代码:

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

AttributeError:尝试访问一个对象没有的属性。
触发代码:

class MyClass:
    attr = 123
m = MyClass()
print(m.nonexistent_attr)

EOFError:没有内建输入,到达了EOF标记。
触发代码:

input()
# 通过键盘输入一些字符,然后按下 Ctrl-Z(Windows)或 Ctrl-D(Unix/Linux)即可触发

ImportError:导入模块失败的时候触发。
触发代码:

import nonexistent_module

IndexError:索引超出序列的范围。
触发代码:

lst = [1, 2, 3]
print(lst[3])

KeyError:字典中查找一个不存在的关键字。
触发代码:

d = {'a': 1, 'b': 2}
print(d['c'])

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

MemoryError:内存溢出(可通过删除对象释放内存)。
触发代码:

lst = [1] * 1024 ** 3 # 创建一个长度为 1GB 的列表

NameError:尝试访问一个不存在的变量。
触发代码:

print(nonexistent_var)

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()

OSError:操作系统产生的异常(例如打开一个不存在的文件)。
触发代码:

with open("nonexistent_file.txt", "r") as f:
    pass

OverflowError:数值运算超出最大限制。
触发代码:

print(2 ** 1000000)

RecursionError:超出最大递归深度。
触发代码:

def my_func():
    my_func()
my_func()

RuntimeError:一般的运行时错误。
触发代码:

raise RuntimeError("My runtime error")

StopIteration:迭代器没有更多的值。
触发代码:

my_iter = iter([1, 2, 3])
print(next(my_iter))
print(next(my_iter))
print(next(my_iter))
print(next(my_iter))

SyntaxError:Python语法错误。
触发代码:

eval("1 + ")

IndentationError:缩进错误。
触发代码:

if True:
print("Hello, world!")

TabError:Tab和空格混用。
触发代码:

def my_func():
    if True:
        print("Hello, world!")
     # 上面这一行的前面有一个 Tab 和一个空格,会触发 TabError

SystemError:Python编译器系统错误。
触发代码:

import sys
sys._getframe(-1)

SystemExit:Python编译器进程被关闭。
触发代码:

import sys
sys._getframe(-1)

TypeError:不同类型间的无效操作。
触发代码:

print(1 + "2")

UnboundLocalError:访问未初始化的本地变量。
触发代码:

def my_func():
    print(x)
    x = 1
my_func()

UnicodeError:Unicode相关的异常。
触发代码:

s = "\u203D"
s.encode("ascii")

ValueError:传入参数的类型正确但是值错误。
触发代码:

int("abc")

ZeroDivisionError:除数为零。
触发代码:

print(1 / 0)

image.gif

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

目录
相关文章
|
1月前
|
存储 JavaScript Java
(Python基础)新时代语言!一起学习Python吧!(四):dict字典和set类型;切片类型、列表生成式;map和reduce迭代器;filter过滤函数、sorted排序函数;lambda函数
dict字典 Python内置了字典:dict的支持,dict全称dictionary,在其他语言中也称为map,使用键-值(key-value)存储,具有极快的查找速度。 我们可以通过声明JS对象一样的方式声明dict
158 1
|
1月前
|
测试技术 Python
Python装饰器:为你的代码施展“魔法”
Python装饰器:为你的代码施展“魔法”
232 100
|
1月前
|
开发者 Python
Python列表推导式:一行代码的艺术与力量
Python列表推导式:一行代码的艺术与力量
348 95
|
2月前
|
Python
Python的简洁之道:5个让代码更优雅的技巧
Python的简洁之道:5个让代码更优雅的技巧
230 104
|
2月前
|
开发者 Python
Python神技:用列表推导式让你的代码更优雅
Python神技:用列表推导式让你的代码更优雅
428 99
|
1月前
|
缓存 Python
Python装饰器:为你的代码施展“魔法
Python装饰器:为你的代码施展“魔法
150 88
|
1月前
|
监控 机器人 编译器
如何将python代码打包成exe文件---PyInstaller打包之神
PyInstaller可将Python程序打包为独立可执行文件,无需用户安装Python环境。它自动分析代码依赖,整合解释器、库及资源,支持一键生成exe,方便分发。使用pip安装后,通过简单命令即可完成打包,适合各类项目部署。
|
Python
python 中*类型对象
【6月更文挑战第9天】
98 2
|
存储 缓存 算法
详解 PyTypeObject,Python 类型对象的载体
详解 PyTypeObject,Python 类型对象的载体
281 3
|
Python

推荐镜像

更多
下一篇
oss云网关配置