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

目录
相关文章
|
8天前
|
人工智能 Shell 开发工具
[oeasy]python065python报错怎么办_try_试着来_except_发现异常
本文介绍了Python中处理异常的基本方法,重点讲解了`try`和`except`的用法。通过一个计算苹果重量的小程序示例,展示了如何捕获用户输入错误并进行处理。主要内容包括: 1. **回顾上次内容**:简要回顾了Shell环境、Python3游乐场和Vim编辑器的使用。 2. **编写程序**:编写了一个简单的程序来计算苹果的总重量,但发现由于输入类型问题导致结果错误。 3. **调试与修正**:通过调试发现输入函数返回的是字符串类型,需要将其转换为整数类型才能正确计算。
48 32
|
5天前
|
数据库 Python
[oeasy]python066_如何捕获多个异常_try_否则_else_exception
本文介绍了Python中`try...except...else`结构的使用方法。主要内容包括: 1. **回顾上次内容**:简要复习了`try`和`except`的基本用法,强调了异常处理的重要性。 2. **详细解释**: - `try`块用于尝试执行代码,一旦发现错误会立即终止并跳转到`except`块。 - `except`块用于捕获特定类型的异常,并进行相应的处理。 - `else`块在没有异常时执行,是可选的。 3. **示例代码**:通过具体例子展示了如何捕获不同类型的异常(如`ValueError`和`ZeroDivisionError`),并解释了异常处理
35 24
|
24天前
|
存储 缓存 Java
Python高性能编程:五种核心优化技术的原理与Python代码
Python在高性能应用场景中常因执行速度不及C、C++等编译型语言而受质疑,但通过合理利用标准库的优化特性,如`__slots__`机制、列表推导式、`@lru_cache`装饰器和生成器等,可以显著提升代码效率。本文详细介绍了这些实用的性能优化技术,帮助开发者在不牺牲代码质量的前提下提高程序性能。实验数据表明,这些优化方法能在内存使用和计算效率方面带来显著改进,适用于大规模数据处理、递归计算等场景。
58 5
Python高性能编程:五种核心优化技术的原理与Python代码
|
27天前
|
数据挖掘 数据处理 开发者
Python3 自定义排序详解:方法与示例
Python的排序功能强大且灵活,主要通过`sorted()`函数和列表的`sort()`方法实现。两者均支持`key`参数自定义排序规则。本文详细介绍了基础排序、按字符串长度或元组元素排序、降序排序、多条件排序及使用`lambda`表达式和`functools.cmp_to_key`进行复杂排序。通过示例展示了如何对简单数据类型、字典、类对象及复杂数据结构(如列车信息)进行排序。掌握这些技巧可以显著提升数据处理能力,为编程提供更强大的支持。
34 10
|
2月前
|
Python
课程设计项目之基于Python实现围棋游戏代码
游戏进去默认为九路玩法,当然也可以选择十三路或是十九路玩法 使用pycharam打开项目,pip安装模块并引用,然后运行即可, 代码每行都有详细的注释,可以做课程设计或者毕业设计项目参考
78 33
|
2月前
|
JavaScript API C#
【Azure Developer】Python代码调用Graph API将外部用户添加到组,结果无效,也无错误信息
根据Graph API文档,在单个请求中将多个成员添加到组时,Python代码示例中的`members@odata.bind`被错误写为`members@odata_bind`,导致用户未成功添加。
54 10
|
2月前
|
数据可视化 Python
以下是一些常用的图表类型及其Python代码示例,使用Matplotlib和Seaborn库。
通过这些思维导图和分析说明表,您可以更直观地理解和选择适合的数据可视化图表类型,帮助更有效地展示和分析数据。
108 8
|
2月前
|
Python
探索Python中的装饰器:简化代码,增强功能
在Python的世界里,装饰器就像是给函数穿上了一件神奇的外套,让它们拥有了超能力。本文将通过浅显易懂的语言和生动的比喻,带你了解装饰器的基本概念、使用方法以及它们如何让你的代码变得更加简洁高效。让我们一起揭开装饰器的神秘面纱,看看它是如何在不改变函数核心逻辑的情况下,为函数增添新功能的吧!
|
2月前
|
人工智能 数据可视化 数据挖掘
探索Python编程:从基础到高级
在这篇文章中,我们将一起深入探索Python编程的世界。无论你是初学者还是有经验的程序员,都可以从中获得新的知识和技能。我们将从Python的基础语法开始,然后逐步过渡到更复杂的主题,如面向对象编程、异常处理和模块使用。最后,我们将通过一些实际的代码示例,来展示如何应用这些知识解决实际问题。让我们一起开启Python编程的旅程吧!
|
2月前
|
存储 数据采集 人工智能
Python编程入门:从零基础到实战应用
本文是一篇面向初学者的Python编程教程,旨在帮助读者从零开始学习Python编程语言。文章首先介绍了Python的基本概念和特点,然后通过一个简单的例子展示了如何编写Python代码。接下来,文章详细介绍了Python的数据类型、变量、运算符、控制结构、函数等基本语法知识。最后,文章通过一个实战项目——制作一个简单的计算器程序,帮助读者巩固所学知识并提高编程技能。

热门文章

最新文章