Python 怎么处理异常?

简介: Python 怎么处理异常?

在Python中,处理异常主要通过try - except语句块来实现,以下是详细介绍及示例:

基本的 try - except 结构

try:
    # 可能会引发异常的代码
    result = 10 / 0
    print(result)
except ZeroDivisionError:
    # 捕获到ZeroDivisionError异常时执行的代码
    print("不能除以零")

在上述代码中,try块内的10 / 0会引发ZeroDivisionError异常。当异常发生时,程序会跳转到对应的except块执行其中的代码。

捕获多种异常

可以在一个try块后跟随多个except块来捕获不同类型的异常。

try:
    num = int('abc')
    result = 10 / num
    print(result)
except ValueError:
    print("将字符串转换为数字失败")
except ZeroDivisionError:
    print("不能除以零")

这里,int('abc')会引发ValueError异常,而如果num为0,10 / num会引发ZeroDivisionError异常。程序会根据实际引发的异常类型执行相应的except块。

使用一个 except 捕获多种异常类型

try:
    num = int('abc')
    result = 10 / num
    print(result)
except (ValueError, ZeroDivisionError):
    print("发生了值错误或者除零错误")

上述代码通过在括号内列出多个异常类型,使用一个except块捕获多种异常。

else 子句

try - except结构还可以包含else子句,当try块中没有引发异常时,会执行else子句中的代码。

try:
    num = 5
    result = 10 / num
except ZeroDivisionError:
    print("不能除以零")
else:
    print("计算结果:", result)

在这个例子中,如果try块中的除法运算成功(没有引发ZeroDivisionError),就会执行else块。

finally 子句

finally子句无论try块中是否发生异常,都会被执行。

try:
    num = 5
    result = 10 / num
except ZeroDivisionError:
    print("不能除以零")
else:
    print("计算结果:", result)
finally:
    print("无论是否有异常,我都会被执行")

finally子句常被用于资源清理,例如关闭文件、数据库连接等操作,确保这些操作一定会被执行。

自定义异常

你也可以创建自己的异常类,通常继承自内置的Exception类。

class MyCustomError(Exception):
    pass

try:
    raise MyCustomError("这是我自定义的异常")
except MyCustomError as e:
    print(f"捕获到自定义异常: {e}")

在上述代码中,定义了一个MyCustomError异常类,并在try块中手动引发该异常,然后在except块中捕获并处理它。

目录
相关文章
|
机器学习/深度学习 Python
pandas将dataframe列中的list转换为多列
在应用机器学习的过程中,很大一部分工作都是在做数据的处理,一个非常常见的场景就是将一个list序列的特征数据拆成多个单独的特征数据。
518 0
|
8月前
|
IDE C# 开发工具
C# 画图工具开发指南(含完整实现方案)
C# 画图工具开发指南(含完整实现方案)
|
9月前
|
存储 JavaScript 前端开发
JavaScript编程:生成随机数的方法
在JavaScript中生成随机数的方法因应用场景而异。简单情形下可以使用 `Math.random()` 来得到基本的随机数,而对于需要整数范围的随机值则可以通过结合 `Math.floor()` 和 `Math.random()` 进行计算。而UUID的生成虽不要求使用加密安全的随机数,但可以通过特定的字符串模式生成满足格式的随机值。最后,需要密码学安全级别的随机数时,应使用 `crypto` 对象的 `getRandomValues()` 方法。选择合适的方法将确保您的应用生成的随机数既符合需求又足够安全。
583 13
|
缓存 并行计算 算法
如何提高 Python 高阶函数的性能?
【10月更文挑战第2天】
320 157
|
JavaScript 前端开发
JavaScript 中的自定义事件
【10月更文挑战第1天】
395 137
|
JavaScript 前端开发
|
安全 Java Python
instanceof 的实现原理
`instanceof` 是 Java 中的一个关键字,用于判断一个对象是否属于某个类或其子类。其原理是通过检查对象的类层次结构,确定该对象是否是指定类的实例。具体实现涉及对象头中的类元数据信息和类加载器的作用。
|
数据采集 传感器 监控
.NET 工控网关 轻量级组态软件
【10月更文挑战第10天】.NET 工控网关是一种基于 .NET 平台开发的设备,用于连接工业控制系统中的不同网络和设备,实现数据传输和协议转换。它能统一处理多种协议(如 Modbus、Profibus)的数据,便于后续系统处理。.NET 平台的优势包括开发效率高、跨平台能力强及安全性高,适用于工业物联网环境。此外,轻量级组态软件具备体积小、资源占用少的特点,可在资源受限的设备上运行,提供数据采集、监控、报警及数据分析等功能,简化工业自动化过程。
335 4
|
Java 编译器
【java面试】- java反射以及优缺点
java反射以及优缺点
630 0
下一篇
开通oss服务