Python3 错误和异常学习笔记

本文将介绍 Python3 中的错误和异常,包括错误和异常的类型、如何处理异常以及一些常见的错误和异常。

错误和异常的类型

在 Python3 中,有两种类型的错误和异常:语法错误和异常。语法错误通常在代码执行前就会被检测到,而异常是在代码执行期间发生的问题。

Python3 中的异常包括以下几种类型:

  • AttributeError
  • IOError
  • ImportError
  • IndexError
  • KeyError
  • KeyboardInterrupt
  • NameError
  • SyntaxError
  • TypeError
  • ValueError

AttributeError

当一个对象没有属性时,会引发 AttributeError 异常。例如:

Copy Code
>>> x = 5 >>> x.length Traceback (most recent call last): File "<stdin>", line 1, in <module> AttributeError: 'int' object has no attribute 'length'

IOError

当打开文件或读取文件失败时,会引发 IOError 异常。例如:

Copy Code
try: f = open("nonexistentfile.txt", "r") except IOError: print("File not found.")

ImportError

当导入模块失败时,会引发 ImportError 异常。例如:

Copy Code
import nonexistentmodule

IndexError

当访问一个不存在的索引时,会引发 IndexError 异常。例如:

Copy Code
>>> lst = [1, 2, 3] >>> lst[3] Traceback (most recent call last): File "<stdin>", line 1, in <module> IndexError: list index out of range

KeyError

当访问一个不存在的键时,会引发 KeyError 异常。例如:

Copy Code
>>> dct = {"name": "Alice", "age": 25} >>> dct["gender"] Traceback (most recent call last): File "<stdin>", line 1, in <module> KeyError: 'gender'

KeyboardInterrupt

当用户在程序运行期间中断程序时,会引发 KeyboardInterrupt 异常。

NameError

当尝试访问未声明变量时,会引发 NameError 异常。例如:

Copy Code
>>> print(x) Traceback (most recent call last): File "<stdin>", line 1, in <module> NameError: name 'x' is not defined

SyntaxError

当代码存在语法错误时,会引发 SyntaxError 异常。例如:

Copy Code
>>> if x > 5 File "<stdin>", line 1 if x > 5 ^ SyntaxError: invalid syntax

TypeError

当操作不支持的类型时,会引发 TypeError 异常。例如:

Copy Code
>>> x = "hello" >>> y = 5 >>> x + y Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: can only concatenate str (not "int") to str

ValueError

当传递给函数的参数不合适时,会引发 ValueError 异常。例如:

Copy Code
>>> int("hello") Traceback (most recent call last): File "<stdin>", line 1, in <module> ValueError: invalid literal for int() with base 10: 'hello' ## 如何处理异常 Python3 中使用 try...except 语句来处理异常。try 块中的代码尝试执行,如果发生异常则跳到 except 块处理异常。 例如:

try: x = 5 / 0 except ZeroDivisionError: print("Cannot divide by zero.")

Copy Code
可以在 except 块中使用多个 except 子句来处理不同类型的异常。 例如:

try: f = open("nonexistentfile.txt", "r") except IOError: print("File not found.") except ValueError: print("Invalid input.")

Copy Code
也可以使用 else 子句来处理没有发生异常的情况。 例如:

try: x = int(input()) except ValueError: print("Invalid input.") else: print("The input is:", x)

Copy Code
## 常见的错误和异常 以下是一些常见的错误和异常以及如何解决它们: ### IndentationError 在代码块中缺少或多余缩进时会引发 IndentationError 异常。需要检查代码的缩进是否正确。 ### NameError 当使用未定义变量时会引发 NameError 异常。需要检查变量名的拼写是否正确以及该变量是否在当前作用域内定义。 ### SyntaxError 当代码存在语法错误时会引发 SyntaxError 异常。需要仔细检查代码的语法是否正确。 ### TypeError 通常在类型不匹配时会引发 TypeError 异常。需要检查操作是否支持该类型。 ### ValueError 通常在传递给函数的参数不合适时会引发 ValueError 异常。需要检查参数是否符合函数的要求。 以上是 Python3 中的错误和异常相关内容。