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天前
|
缓存 开发者 Python
探索Python中的装饰器:简化代码,增强功能
【10月更文挑战第35天】装饰器在Python中是一种强大的工具,它允许开发者在不修改原有函数代码的情况下增加额外的功能。本文旨在通过简明的语言和实际的编码示例,带领读者理解装饰器的概念、用法及其在实际编程场景中的应用,从而提升代码的可读性和复用性。
|
2天前
|
设计模式 缓存 监控
Python中的装饰器:代码的魔法增强剂
在Python编程中,装饰器是一种强大而灵活的工具,它允许程序员在不修改函数或方法源代码的情况下增加额外的功能。本文将探讨装饰器的定义、工作原理以及如何通过自定义和标准库中的装饰器来优化代码结构和提高开发效率。通过实例演示,我们将深入了解装饰器的应用,包括日志记录、性能测量、事务处理等常见场景。此外,我们还将讨论装饰器的高级用法,如带参数的装饰器和类装饰器,为读者提供全面的装饰器使用指南。
|
2天前
|
存储 算法 搜索推荐
Python高手必备!揭秘图(Graph)的N种风骚表示法,让你的代码瞬间高大上
在Python中,图作为重要的数据结构,广泛应用于社交网络分析、路径查找等领域。本文介绍四种图的表示方法:邻接矩阵、邻接表、边列表和邻接集。每种方法都有其特点和适用场景,掌握它们能提升代码效率和可读性,让你在项目中脱颖而出。
14 5
|
2天前
|
数据库 Python
异步编程不再难!Python asyncio库实战,让你的代码流畅如丝!
在编程中,随着应用复杂度的提升,对并发和异步处理的需求日益增长。Python的asyncio库通过async和await关键字,简化了异步编程,使其变得流畅高效。本文将通过实战示例,介绍异步编程的基本概念、如何使用asyncio编写异步代码以及处理多个异步任务的方法,帮助你掌握异步编程技巧,提高代码性能。
12 4
|
4天前
|
缓存 开发者 Python
探索Python中的装饰器:简化和增强你的代码
【10月更文挑战第32天】 在编程的世界中,简洁和效率是永恒的追求。Python提供了一种强大工具——装饰器,它允许我们以声明式的方式修改函数的行为。本文将深入探讨装饰器的概念、用法及其在实际应用中的优势。通过实际代码示例,我们不仅理解装饰器的工作方式,还能学会如何自定义装饰器来满足特定需求。无论你是初学者还是有经验的开发者,这篇文章都将为你揭示装饰器的神秘面纱,并展示如何利用它们简化和增强你的代码库。
|
2天前
|
API 数据处理 Python
探秘Python并发新世界:asyncio库,让你的代码并发更优雅!
在Python编程中,随着网络应用和数据处理需求的增长,并发编程变得愈发重要。asyncio库作为Python 3.4及以上版本的标准库,以其简洁的API和强大的异步编程能力,成为提升性能和优化资源利用的关键工具。本文介绍了asyncio的基本概念、异步函数的定义与使用、并发控制和资源管理等核心功能,通过具体示例展示了如何高效地编写并发代码。
11 2
|
4天前
|
机器学习/深度学习 自然语言处理 API
如何使用阿里云的语音合成服务(TTS)将文本转换为语音?本文详细介绍了从注册账号、获取密钥到编写Python代码调用TTS服务的全过程
如何使用阿里云的语音合成服务(TTS)将文本转换为语音?本文详细介绍了从注册账号、获取密钥到编写Python代码调用TTS服务的全过程。通过简单的代码示例,展示如何将文本转换为自然流畅的语音,适用于有声阅读、智能客服等场景。
26 3
|
2天前
|
Python
不容错过!Python中图的精妙表示与高效遍历策略,提升你的编程艺术感
本文介绍了Python中图的表示方法及遍历策略。图可通过邻接表或邻接矩阵表示,前者节省空间适合稀疏图,后者便于检查连接但占用更多空间。文章详细展示了邻接表和邻接矩阵的实现,并讲解了深度优先搜索(DFS)和广度优先搜索(BFS)的遍历方法,帮助读者掌握图的基本操作和应用技巧。
14 4
|
2天前
|
设计模式 程序员 数据处理
编程之旅:探索Python中的装饰器
【10月更文挑战第34天】在编程的海洋中,Python这艘航船以其简洁优雅著称。其中,装饰器作为一项高级特性,如同船上的风帆,让代码更加灵活和强大。本文将带你领略装饰器的奥秘,从基础概念到实际应用,一起感受编程之美。
|
4天前
|
存储 人工智能 数据挖掘
从零起步,揭秘Python编程如何带你从新手村迈向高手殿堂
【10月更文挑战第32天】Python,诞生于1991年的高级编程语言,以其简洁明了的语法成为众多程序员的入门首选。从基础的变量类型、控制流到列表、字典等数据结构,再到函数定义与调用及面向对象编程,Python提供了丰富的功能和强大的库支持,适用于Web开发、数据分析、人工智能等多个领域。学习Python不仅是掌握一门语言,更是加入一个充满活力的技术社区,开启探索未知世界的旅程。
15 5
下一篇
无影云桌面