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

目录
相关文章
|
2天前
|
JavaScript 前端开发 Python
用python执行js代码:PyExecJS库
文章讲述了如何使用PyExecJS库在Python环境中执行JavaScript代码,并提供了安装指南和示例代码。
22 1
用python执行js代码:PyExecJS库
|
2天前
|
Python
turtle库的几个案例进阶,代码可直接运行(python经典编程案例)
该文章展示了使用Python的turtle库进行绘图的进阶案例,包括绘制彩色圆形和复杂图案的代码示例。
26 6
turtle库的几个案例进阶,代码可直接运行(python经典编程案例)
|
2天前
|
Python
turtle库的几个简单案例,代码可直接运行(python经典编程案例)
该文章提供了多个使用Python的turtle库绘制不同图形的简单示例代码,如画三角形、正方形、多边形等,展示了如何通过turtle进行基本的绘图操作。
12 5
|
3天前
|
NoSQL MongoDB 数据库
python3操作MongoDB的crud以及聚合案例,代码可直接运行(python经典编程案例)
这篇文章提供了使用Python操作MongoDB数据库进行CRUD(创建、读取、更新、删除)操作的详细代码示例,以及如何执行聚合查询的案例。
18 6
|
1天前
|
存储 Python
深度剖析:Python里字典树Trie的构建与查询,让你的代码更优雅!
在编程的世界里,数据结构的选择往往直接决定了程序的效率和可读性。今天,我们将深入探索一种高效处理字符串搜索与匹配的数据结构——字典树(Trie),也称作前缀树或单词查找树。通过Python实现Trie树,我们将看到它如何优雅地解决一系列字符串相关的问题,并提升代码的整体质量。
8 2
|
3天前
|
数据处理 开发者 Python
代码之美:探索简洁而强大的Python编程
【8月更文挑战第56天】在编程的世界里,简洁不仅仅是一种风格,它是高效和可维护性的代名词。本文将通过Python编程语言的视角,带领读者领略代码的优雅与力量。我们将从基础语法出发,逐步深入到函数式编程、面向对象设计,以及实用的第三方库使用,揭示如何通过简洁的代码解决复杂问题。准备好让你的思维得到启发,让我们一起走进Python的世界,体验代码之美。
|
2天前
|
IDE 开发工具 Python
python3代码编程规范(命名、空格、注释、代码布局、编程建议等)
该文章详细介绍了Python3的编程规范,包括命名、空格使用、注释、代码布局等方面的最佳实践,帮助提升代码的可读性和一致性。
11 0
|
数据采集 数据挖掘 编译器
【Python 基础教程】错误与异常的处理
【Python 基础教程】错误与异常的处理
170 0
【Python 基础教程】错误与异常的处理
|
存储 缓存 安全
【python】错误和异常(第三讲)
assert,翻译过来是“断言”之意。assert 是一句等价于布尔真的判定,发生异常就意味着表达式为假。 assert 的应用情景就有点像汉语的意思一样,当程序运行到某个节点的时候,就断定某个变量的值必然是什么,或者对象必然拥有某个属性等,简单说就是断定什么东西必然是什么,如果不是,就抛出错误。......
214 0
【python】错误和异常(第三讲)
|
自然语言处理 Linux 测试技术
【python】错误和异常(第二讲)
处理多个异常,并不是因为同时报出多个异常。程序在运行中,只要遇到一个异常就会有反应,所以,每次捕获到的异常一定是一个。所谓处理多个异常的意思是可以容许捕获不同的异常,有不同的 except 子句处理。......
154 0
【python】错误和异常(第二讲)