Python 错误与异常

python

Python 错误与异常

错误 Error

编程中会出现三大类型的错误:

  • 语法错误 SyntaxError:常常由于拼写错误造成
  • 用法错误:要求计算机执行不合理的操作时,就存在用法错误,如传递不符合数据类型的数据。Python 的 NameErrorTypeError 消息通常都是这种类型的错误。当程序运行时弹出 Traceback 表示「程序出错停止时正在执行的内容」。
    • 当调用函数时出现这类错误,一般返回 Traceback 来显示函数调用流程以尝试告诉你导致该错误的位置。
    • 最后一行告诉发生了什么类型的错误
    • 由于错误内容出现在最近的代码中,我们可以从最后开始分析这段错误信息。在(最后一行的)上一行显示了出错的部分,还提供了行号,基于 Traceback 可以找到错误根源并解决问题(但注意,错误消息提供的行号可能不是实际需要更改的行)。
  • 逻辑错误:程序能正常运行没有崩溃,但是行为和你想要的不一样,因为所写的和想要的不一样。

较为常见的一种错误类型是 Syntax Error 这种错误类型是在程序运行之前,对程序对代码进行语法检查时发现了问题。

Tip

参考:

Python 教程页面的错误和异常

语法错误 Syntax Error

没有遵守正确的 Python 语法时,无法解析代码就会发生语法错误。

如多输入或少输入了括号,常有一个插入号 ^ 表示错误的位置

Tip

Python 在代码运行之就进行语法错误的检测

异常 Exception

异常 Exception 是在代码运行时出现的问题与错误有区别,其中特别注意异常不包括语法错误。异常值是 python 中内置的一类值,如 NameErroTypeError

当代码导致异常发生也称为抛出异常,通过 Python 输出的异常值可以知道代码发生了何种错误。

索引错误 IndexError

一般是索引超出了范围导致 IndexError

值异常 ValueError

类型正确,值不符合

变量名错误 NameError

一般引用一个未定义的变量名

ZeroDivisionError

在运算中以 0 作为除数引起的错误

处理异常

Try 语句

使用 try 语句处理异常,可以在遇到指定的异常值时执行特定的代码,避免程序崩溃。

try 语句有4种子句:

  • try 是唯一必需的子句,子句下缩进的代码块是首先运行的
  • except 下缩进的代码块是在运行 try 代码块时遇到异常后执行的。默认是遇到所有异常都会运行该代码块,可以在关键字 except 后指定特定类型的异常才运行该代码块。
  • else 在运行 try 块时没有遇到异常时才运行的代码块
  • finally 在离开 try 语句前,在任何形式下都将运行 finally 块中的代码(即使要结束程序)
python
# 捕获在运行try代码块遇到的ValueError异常
try:
    some code
except ValueError:
    soem code

# 使用包含多种异常的元组可同时捕获多种异常
try:
    some code
except (ValueError, KeyboardInterrupt):
    some code

# 如果我们希望**根据异常执行不同的代码块**,可以添加多个`except`块。
try:
    some code
except ValueError:
    some code
except KeyboardInterrupt:
    some code

访问错误消息

在处理异常时,可以访问其错误消息

python
try:
    some code
except ZeroDivisionError as e:
    some code
    print("ZeroDivisionError occurred: {}".format(e))

🔨 编译结果

shell
ZeroDivisionError occurred: division by zero

或访问未指定的具体错误

python
try:
    some code
except Exception as e:
    some code
    print("Exception occurred: {}".format(e))

Exception 是 Python 所有内置异常的 基础类


Copyright © 2025 Ben

Theme BlogiNote

Icons from Icônes