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语句来捕获并处理异常,从而保证程序的健壮性和稳定性。

目录
相关文章
|
23小时前
|
存储 开发者 Python
高阶Python|返回类型提示技巧 (1)
高阶Python|返回类型提示技巧 (1)
6 1
高阶Python|返回类型提示技巧 (1)
|
4天前
|
数据采集 存储 Java
如何让Python爬虫在遇到异常时继续运行
构建健壮Python爬虫涉及异常处理、代理IP和多线程。通过try/except捕获异常,保证程序在遇到问题时能继续运行。使用代理IP(如亿牛云)防止被目标网站封锁,多线程提升抓取效率。示例代码展示了如何配置代理,设置User-Agent,以及使用SQLite存储数据。通过`fetch_url`函数和`ThreadPoolExecutor`实现抓取与重试机制。
如何让Python爬虫在遇到异常时继续运行
|
1天前
|
Python
python类型错误(TypeError)
【7月更文挑战第20天】
10 4
|
1天前
|
Python
费德勒权变模型(Fiedler Contingency Model)详解与Python代码示例
费德勒权变模型(Fiedler Contingency Model)详解与Python代码示例
|
1天前
|
Python
指数平滑法详解与Python代码示例
指数平滑法详解与Python代码示例
|
2天前
|
存储 Python
深度剖析:Python里字典树Trie的构建与查询,让你的代码更优雅!
【7月更文挑战第20天】Trie树(前缀树)是高效处理字符串搜索的 数据结构**。通过Python实现,每个节点含指向子节点的链接(字典)和结束标识。`TrieNode`和`Trie`类分别表示节点和树,支持插入、搜索和前缀检查。空间效率高,共享公共前缀,时间复杂度O(m)。适用于字符串集合的快速检索和灵活扩展,如自动补全。学习和应用Trie能提升代码效率和质量。
6 0
|
14天前
|
安全 Python
告别低效编程!Python线程与进程并发技术详解,让你的代码飞起来!
【7月更文挑战第9天】Python并发编程提升效率:**理解并发与并行,线程借助`threading`模块处理IO密集型任务,受限于GIL;进程用`multiprocessing`实现并行,绕过GIL限制。示例展示线程和进程创建及同步。选择合适模型,注意线程安全,利用多核,优化性能,实现高效并发编程。
27 3
|
13天前
|
数据采集 大数据 数据安全/隐私保护
Python编程:如何有效等待套接字的读取与关闭
Python网络编程中,套接字事件处理至关重要。利用`selectors`模块和代理IP能增强程序的稳定性和可靠性。代码示例展示了如何通过代理连接目标服务器,注册套接字的读写事件并高效处理。在代理IP配置、连接创建、事件循环及回调函数中,实现了数据收发与连接管理,有效应对网络爬虫或聊天应用的需求,同时保护了真实IP。
Python编程:如何有效等待套接字的读取与关闭
|
4天前
|
Python
告别低效!Python并查集:数据结构界的超级英雄,拯救你的编程人生!
【7月更文挑战第18天】并查集,数据结构超级英雄,用于不相交集合的合并与查询。Python实现包括初始化、查找根节点和合并操作。应用广泛,如社交网络分析、图论问题、集合划分等。示例代码展示了解决岛屿数量问题,统计连通的“1”单元格数。掌握并查集,提升编程效率,解决复杂问题。
21 6