| Python 基础 (一)Python基本认识与环境搭建 | Python 基础 (一)Python基本认识与环境搭建 |
|---|---|
| Python 基础 (二)Python变量与基本数据类型 | Python 基础 (二)Python变量与基本数据类型 |
| Python 基础 (三)Python基本语句与基本运算 | Python 基础 (三)Python基本语句与基本运算 |
| Python 基础 (四)Python函数 | Python 基础 (四)Python函数 |
| Python 基础 (五)Python包与模块 | Python 基础 (五)Python包与模块 |
| Python 基础 (六)Python的文件模块 | Python 基础 (六)Python的文件模块 |
| Python 基础 (七)Python的异常处理机制 | Python 基础 (七)Python的异常处理机制 |
| Python 基础 (八)Python的类与对象 | Python 基础 (八)Python的类与对象 |
| Python 基础 (九)Python的内置模块 | Python 基础 (九)Python的内置模块 |
| Python 基础 (十)Python实现简单的图书管理系统 | Python 基础 (十)Python实现简单的图书管理系统 |

作为 Python 初学者,在刚学习 Python 编程时,经常会看到一些报错信息,在前面我们没有提及,这章节我们会专门介绍。
Python 有两种错误很容易辨认:语法错误和异常。
Python assert(断言)用于判断一个表达式,在表达式条件为 false 的时候触发异常。

Python 的语法错误或者称之为解析错,是初学者经常碰到的,如下实例
# ---encoding:utf-8---
# @Time : 2023/9/3 10:11
# @Author : Darwin_Bossen
# @Email :3139066125@qq.com
# @Site : 语法错误
# @File : ErrorTest.py
if __name__ == '__main__':
while True print('Hello world')
SyntaxError: invalid syntax
这个例子中,函数 print() 被检查到有错误,是它前面缺少了一个冒号 : 。
语法分析器指出了出错的一行,并且在最先找到的错误的位置标记了一个小小的箭头。
即便 Python 程序的语法是正确的,在运行它的时候,也有可能发生错误。运行期检测到的错误被称为异常。
# ---encoding:utf-8---
# @Time : 2023/9/3 10:13
# @Author : Darwin_Bossen
# @Email :3139066125@qq.com
# @Site : 常见异常
# @File : ErrorTest02.py
if __name__ == '__main__':
# 算术异常
print(10/0)
# 索引异常
arr=[1,2,3,4,5,6,7,8,9,10]
print(arr[10])
# 键异常
dict={"name":"Darwin","age":18}
print(dict('hhj'))
# 类型异常
print(10+"hello")
# 值异常
print(int("hello"))
# 文件异常
f=open("hello.txt","r")
print(f.read())
异常捕捉可以使用 try/except 语句

# ---encoding:utf-8---
# @Time : 2023/9/3 10:17
# @Author : Darwin_Bossen
# @Email :3139066125@qq.com
# @Site : 异常处理
# @File : ErrorTest03.py
if __name__ == '__main__':
try:
print(10/0)
except Exception as e:
print(e)
finally:
print("程序执行完毕")
try 语句按照如下方式工作;
try/except 语句还有一个可选的 else 子句,如果使用这个子句,那么必须放在所有的 except 子句之后,else 子句将在 try 子句没有发生任何异常的时候执行。
# ---encoding:utf-8---
# @Time : 2023/9/3 10:19
# @Author : Darwin_Bossen
# @Email :3139066125@qq.com
# @Site : 异常处理: try/except...else
# @File : ErrorTest04.py
if __name__ == '__main__':
try:
print(10/1)
except Exception as e:
print(e)
else:
print("程序执行完毕")

try-finally 语句无论是否发生异常都将执行最后的代码

# ---encoding:utf-8---
# @Time : 2023/9/3 10:21
# @Author : Darwin_Bossen
# @Email :3139066125@qq.com
# @Site : try-finally
# @File : ErrorTest05.py
if __name__ == '__main__':
# 读取文件
try:
f = open("hello.txt", "r")
print(f.read())
except Exception as e:
print(e)
finally:
if f:
f.close()
print("程序执行完毕")
Python 使用 raise 语句抛出一个指定的异常。

# ---encoding:utf-8---
# @Time : 2023/9/3 10:24
# @Author : Darwin_Bossen
# @Email :3139066125@qq.com
# @Site : raise 异常
# @File : ErrorTest06.py
if __name__ == '__main__':
try:
print(10/0)
except Exception as e:
raise e
finally:
print("程序执行完毕")
# ---encoding:utf-8---
# @Time : 2023/9/3 10:26
# @Author : Darwin_Bossen
# @Email :3139066125@qq.com
# @Site : 自定义异常
# @File : ErrorTest07.py
# 自定义异常
class MyException(Exception):
def __init__(self, msg):
self.msg = msg
def __str__(self):
return self.msg
if __name__ == '__main__':
try:
raise MyException("自定义异常")
except MyException as e:
print(e)
finally:
print("程序执行完毕")
Python的异常机制是一种处理程序中出现错误的方式。异常是在程序执行过程中检测到的错误或异常情况,它们可以阻止程序正常运行。Python使用try和except语句来处理异常,以下是异常处理的基本结构:
try:
# 可能会引发异常的代码
result = 10 / 0 # 这里故意引发了一个除零异常
except ZeroDivisionError:
# 处理特定类型的异常
print("除零错误发生了!")
except Exception as e:
# 处理其他类型的异常,并可以访问异常对象
print(f"发生了异常:{e}")
else:
# 如果没有异常发生,执行此块
print("没有发生异常。")
finally:
# 无论是否发生异常,都会执行此块
print("无论如何都会执行的代码块。")
上述代码示例中,程序尝试执行可能引发异常的代码块(在try块内)。如果异常发生,程序会跳转到匹配的except块进行处理。如果没有异常发生,将执行else块。最后,不管是否发生异常,都会执行finally块。
Python提供了多种内置异常类型,例如ZeroDivisionError(除零异常)、TypeError(类型错误)、ValueError(值错误)等。你可以根据需要捕获和处理这些异常,或者创建自定义异常类以处理特定情况下的异常。