在编程的世界里,我们经常会遇到各种阻碍程序运行的绊脚石。错误是程序中导致其停止执行的问题。另一方面,当某些内部事件改变了程序的正常流程时,就会引发异常。今天,让我们一起深入探讨这些概念,看看如何在 Python 中识别和处理它们。
Python 中的语法错误
当代码不符合 Python 的规则时,就像在英语中使用了不正确的语法一样,就会发生语法错误。Python 会在运行程序之前停下来并指出问题所在。
示例 1 :在这个例子中,代码返回了一个语法错误,因为 if 语句后面缺少了一个冒号(:)。正确的语法要求使用冒号来指示如果条件为真时要执行的代码块的开始。
Python
CODEBLOCK_e7b63bda
输出
!Output3467语法错误
示例 2: 此代码返回了一个 IndentationError(缩进错误),因为 Python 期望在 if 语句之后有一个缩进的代码块,但该块内的语句没有正确缩进。
Python
CODEBLOCK_057d22f2
输出
!Output缩进错误
Python 逻辑错误(异常)
逻辑错误是程序中微妙的 Bug,它允许代码运行,但会产生不正确或非预期的结果。这些错误通常更难检测,因为程序不会崩溃,但输出结果却不是我们预期的。
逻辑错误的特征
- 无语法错误: 代码可以顺利运行。
- 输出不符合预期: 程序产生的结果不是程序员想要的。
- 难以检测: 这些错误可能很棘手,因为代码本身没有明显的问题。
- 原因: 逻辑缺陷、错误的假设或操作符使用不当。
示例:
Python
CODEBLOCK_92edf1e5
输出
29.0
解释: 预期的输出是 a 的平均值应该是 30,但程序输出了 29.0。发生逻辑错误是因为公式 b/ len(a) – 1 错误地减去了 1,导致了不正确的结果。正确的公式应该是 b / len(a)。
常见的内置异常
除了上述提到的异常之外,还有一些常见的内置异常:
描述
—
当检索到错误的列表索引时发生。
当 assert 语句失败时发生。
当属性分配失败时发生。
当找不到导入的模块时发生。
当找不到字典的键时发生。
当变量未定义时发生。
当程序内存不足时发生。
当函数和操作应用于不正确的类型时发生。> 注意: 欲了解更多信息,请参阅 Python 中的内置异常
错误处理
Python 提供了使用 try、except 和 finally 块来处理错误和异常的机制。这允许我们对错误进行优雅的处理,而不会导致程序崩溃。
示例 1: 这个例子展示了 try、except 和 finally 如何处理错误。try 运行有风险的代码,except 捕获错误,而 finally 无论如何都会运行。
Python
CODEBLOCK_d3854352
输出
code start
an error occurs
GeeksForGeeks
解释:
- try 块 运行代码,如果发生异常(例如 1 / 0 引发 ZeroDivisionError)则抛出该异常。
- except 块 捕获异常,在发生错误的情况下打印 "an error occurs"。
- finally 块 总是会执行,打印 "GeeksForGeeks" 以标记执行结束。
示例 2: 这个例子展示了 try 和 except 如何处理自定义错误。try 检查一个条件,如果失败则引发 ValueError,except 捕获并打印错误消息。
Python
CODEBLOCK_31681588
输出
please add money
解释:
- try 块 设置 a = 1999,如果 a < 2999 则引发 ValueError,否则打印 "Eligible"。
- except 块 捕获 ValueError 并打印 "please add money"。