Python 中的异常处理

python 中的异常处理

本文探讨了 python 中用于处理异常的各种技术,包括 try- except 块、自定义异常以及异常链接和丰富等高级功能。

python 提供了一个强大的异常处理框架,它不仅允许程序员实现防止崩溃的代码,而且还提供反馈并保持应用程序稳定性。此外,它使开发人员能够使用 try- except 块、自定义异常等结构优雅地管理错误。

– 尝试除外块

在 try- except 块中,可能引发异常的代码放在 try 块中, except 块指定发生异常时要采取的操作(python software foundation,n.d.)。

立即学习“Python免费学习笔记(深入)”;

例如:

try:    result = 1 / 0except zerodivisionerror:    print("cannot divide by zero.")

要在一个 try- except 块中捕获多个异常,我们可以使用带有多个 except-块的 try 块来为每种异常类型生成特定的响应。或者,我们可以使用元组通过单个异常表达式捕获多个异常。

例如:

# one try block and several except blockstry:    result = 1 / 'a'except zerodivisionerror:    print("cannot divide by zero.")except typeerror:    print("type error occurred.")# one try block and one except tuple blocktry:    # some operation    result = 1 / 'a'except (zerodivisionerror, typeerror) as e:    print(f"error occurred: {e}")

– else 子句

else 子句位于 try- except 块之后,如果 try 块没有引发异常,则运行该子句。

例如:

try:    result = 1 / 2except zerodivisionerror:    print(“cannot divide by zero.”)else:    print(“division successful.”)

– 最后子句

finally 子句始终放置在 try 块或任何 except 块之后。它包含无论如何都会运行的代码,通常用于清理文件或网络连接等资源,即使引发异常也是如此。

例如:

try:    result = 1 / ‘a’except zerodivisionerror:    print(“cannot divide by zero.”)except typeerror:    print(“type error occurred.”)else:    print(“division successful.”)finally:    print(“goodbye, world!”)

加薪声明

引发异常:raise 子句通过强制异常发生来引发异常,通常表示尚未满足某个条件。

例如:

if ‘a’ > 5:    raise valueerror(“a must not exceed 5”)

– 异常链

您可以使用 raise 子句来链接异常。这对于向原始错误添加上下文非常有用。

例如

try:    open(‘myfile.txt’)except filenotfounderror as e:    raise runtimeerror(“failed to open file”) from e

– 自定义例外

您可以通过继承 exception 类或任何其他内置异常类来定义自己的异常类(mitchell,2022)。

例如:

class my_custom_ (exception):    passtry:    raise mycustomerror(“an error occurred”)except mycustomerror as e:    print(e)

– 丰富例外

您可以使用 add_note() 方法将信息或上下文添加到异常中,将自定义消息或注释“附加”到异常对象(又名 e.

例如:

def divide_numbers(a, b):    try:        result = a / b    except zerodivisionerror as e:        e.add_note(“cannot divide by zero”)        e.add_note(“please provide a non-zero divisor”)        raisetry:    num1 = 10    num2 = 0    divide_numbers(num1, num2)except zerodivisionerror as e:    print(“an error occurred:”)    print(str(e))

处理异常很重要,原因如下:

防止程序崩溃:未处理的异常可能会导致程序崩溃,从而导致数据丢失和糟糕的用户体验。提供有意义的错误消息:通过处理异常,您可以向用户提供信息丰富的错误消息,帮助他们了解出了什么问题以及如何修复它。允许优雅降级:异常处理使程序即使发生错误也能继续运行。

一个简单的程序错误处理示例:

##-------------------------------------------# pseudocode:# 1. define a custom exception class called customerror.# 2. create a function that raises the customerror exception #    based on a condition.# 3. use a try-except block to handle the customerror exception.#-------------------------------------------# program inputs:# - num: an integer value.#-------------------------------------------# program outputs:# - custom exception message when the customerror exception is raised.# - success message when no exception is raised.#-------------------------------------------class customerror(exception):    '''        a custom exception class.    '''    passdef check_number(num):    '''        checks if the given number is positive.        :param int: num, an integer value.        :raises customerror: if the number is not positive.    :return: none    '''    if num  none:    '''        the main function that demonstrates the usage of custom exceptions.    '''    try:        check_number(5)  # valid number        check_number(-2)  # raises customerror    except customerror as e:        print(f"error: {str(e)}")#--- execute the programif __name__ == "__main__": main()
>>>Number is valid.Error: Number must be positive.

总而言之,python 提供了一个全面的异常处理框架,允许程序处理意外情况而不会突然失败。通过利用 try-except 块、自定义异常等结构以及异常链接和丰富等高级功能,开发人员可以确保他们的程序具有弹性、用户友好,并且能够优雅地处理意外情况。

参考文献:

米切尔 r(2022 年,6 月 13 日)。自定义异常。 _python 基础培训 _[视频]。领英学习。 https://www.linkedin.com/learning/python-essential-training-14898805/custom-exceptions?autoskip=true&resume=false&u=2245842

python 软件基础。 (日期不详)。 8.错误和异常。 python。 python.org.

最初于 2024 年 8 月 21 日发表于 exception handling in python – medium。

以上就是Python 中的异常处理的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1354653.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月13日 18:42:25
下一篇 2025年12月13日 18:42:38

相关推荐

  • 理解 Python 中的多态性

    本文深入解释了 python 中的多态性,强调了它在面向对象编程中的作用。 多态性是一个希腊词,意思是多种形状或多种形式。多态性是面向对象编程(oop)中的一个基本概念。 python 是多态的,这意味着 python 中的对象能够采取多种形式。简而言之,多态性允许我们以多种不同的方式执行相同的操作…

    2025年12月13日
    000
  • PyTorch 中的 MNIST

    请我喝杯咖啡☕ *我的帖子解释了 mnist。 mnist() 可以使用 mnist 数据集,如下所示: *备忘录: 第一个参数是 root(必需类型:str 或 pathlib.path)。 *绝对或相对路径都是可能的。第二个参数是 train(optional-default:false-typ…

    2025年12月13日
    000
  • python爬虫怎么登录账号

    Python 爬虫登录账号的方法:获取登录页面并解析表单数据。设置浏览器设置,禁用 JavaScript 和图片加载,提高爬虫速度。构造登录请求,包含表单字段的名称、值和会话令牌。发送登录请求并解析登录结果页面。查找表示成功登录的标记或消息。如果登录成功,存储会话令牌或 cookie 以供后续请求使…

    2025年12月13日
    000
  • python爬虫怎么导入文件

    在 Python 爬虫中导入文件,可使用 import 语句导入模块或文件;使用 from…import 语句导入特定类、函数或变量;指定绝对或相对路径导入非当前脚本中的文件。注意:确保所需文件位于 Python 可访问路径中,本地定义的同名类或函数优先使用,且为保证性能应避免导入不必要模块。 如何…

    2025年12月13日
    000
  • PyTorch 中的 EMNIST

    请我喝杯咖啡☕ *我的帖子解释了 emnist。 emnist()可以使用emnist数据集,如下所示: *备忘录: 第一个参数是 root(必需类型:str 或 pathlib.path)。 *绝对或相对路径都是可能的。第二个参数是 split(required-type:str)。 *可以设置“…

    2025年12月13日
    000
  • 用离散语义熵和困惑度检测法学硕士的幻觉

    在使用大型语言模型 (llm) 时,发现幻觉可能很棘手。我们可以使用困惑度、蕴涵和离散语义熵来更好地识别潜在的幻觉,而不是仅仅依靠法学硕士作为判断(这仍然可能会出错,并且许多评估框架仅使用它来检测幻觉)。虽然我在这里使用法学硕士来检测蕴涵,但这不是必要的。也就是说,这种方法最适合那些有直接、事实答案…

    2025年12月13日
    000
  • PyTorch 中的 KMNIST

    请我喝杯咖啡☕ *我的帖子解释了 kmnist。 kmnist() 可以使用 kmnist 数据集,如下所示: *备忘录: 第一个参数是 root(必需类型:str 或 pathlib.path)。 *绝对或相对路径都是可能的。第二个参数是 train(optional-default:true-t…

    2025年12月13日
    000
  • grid在python中的含义

    在 Python 中,grid 是一个用于组织和显示数据的网格结构,由横向和纵向的线组成。它有以下类型:NumPy ndarray、Pandas DataFrame 和 Matplotlib GridSpec。网格用于组织数据、可视化数据、进行数据分析和创建用户界面。可以使用多种方法创建和操作网格,…

    2025年12月13日
    000
  • python中entry的用法

    Entry 小部件是 tkinter 中用于获取单行文本输入的控件。可用于设置属性,如宽度、可见性、状态和绑定变量。事件处理包括回车、按键松开、获取/失去焦点。示例代码演示了如何在 GUI 中使用 Entry 小部件,带标签和输入框。 Python tkinter 中 Entry 小部件 Entry…

    2025年12月13日
    000
  • python中label用法

    Python 中 label 可用于标记代码块,以便轻松跳转。其用法包括:定义 label:label:使用 goto 语句跳转到 label:goto my_label Python 中 label 用法 定义 label 是 Python 中用于标记代码块的特殊关键字。它允许开发者轻松地跳转到代…

    2025年12月13日
    000
  • python中math用法

    Python 的 math 模块提供各种数学函数,包括三角函数、指数、对数、统计和常规数学函数。它通过导入模块和使用点号语法调用函数来使用。实例包括计算三角形面积和复利金额,展示了 math 模块在 Python 开发中的实用性。 Python 中的 math 模块 Python 中的 math 模…

    2025年12月13日
    000
  • main在python中的用法

    Python 中的 main() 函数是程序的入口点,是程序开始执行的第一个函数。优点:模块化、可测试性。使用场景:希望将程序逻辑与模块导入分开或在程序启动时执行特定任务。语法:def main(): # 程序逻辑。 main() 在 Python 中的用法 简介 main() 函数是 Python…

    2025年12月13日
    000
  • python中常见问题

    Python 中常见问题包括:变量未定义错误:定义变量并赋值可解决。索引超出范围错误:确保索引在序列长度范围内。名称错误:导入模块并正确拼写函数、类或模块名称。类型错误:确保操作数类型兼容。值错误:使用适合操作的值。语法错误:检查代码语法并正确结束语句。内存错误:优化代码或使用更大内存的计算机。At…

    2025年12月13日
    000
  • Python中addict库使用Dict的类

    利用addict库,可以轻松在Python中创建可像类访问的字典(dict),从而简化字典的使用:导入addict库中的Dict类,创建Dict对象。采用点运算符(.)对象化访问字典键,如同访问类属性。支持链式调用,方便访问嵌套数据结构。提供简洁语法,提高代码可读性。避免KeyError异常,优雅地…

    2025年12月13日
    000
  • YOLOv8模型pytorch格式转为onnx格式的步骤详解

    PyTorch YOLOv8模型可通过以下步骤转换为ONNX格式:安装依赖项(PyTorch 1.12+、TorchVision、ONNX)导出PyTorch模型(加载模型、设置评估模式、使用torch.onnx.export导出)优化ONNX模型(使用onnx-simplifier简化、使用onn…

    2025年12月13日
    000
  • Day – 切片、for 循环和嵌套循环

    切片: 切片是 python 中用于提取序列的一部分的编程技术。通过指定索引范围,您可以检索序列的特定部分,而无需更改原始数据。 示例: 名称=[2,8] 步骤运算符: 步进运算符是指在循环中指定迭代增量的能力。在 python 中,这通常与 range() 函数一起使用,它允许指定一个步骤来控制循…

    2025年12月13日
    000
  • 基于Python制作一个全自动微信清粉小工具

    借助 Python,可以打造全自动微信清粉神器:1. 导入库并登录微信。2. 获取好友列表。3. 通过上次联系时间筛选僵尸粉。4. 删除僵尸粉。5. 清理完成后退出微信。 打造全自动微信清粉神器:Python 实战 随着社交媒体的蓬勃发展,微信已成为我们生活中不可或缺的一部分。然而,随着好友数量的不…

    2025年12月13日
    000
  • 使用Python和FastAPI实现MinIO断点续传功能

    使用MinIO SDK和FastAPI框架,可以在Python应用程序中实现断点续传。步骤依次为:1. 安装依赖项,2. 初始化MinIO客户端,3. 实现文件上传处理,4. 处理断点请求,5. 测试断点续传。通过设置“x-amz-upload-state”请求头部,可以暂停和恢复大型文件上传,而无…

    2025年12月13日
    000
  • 适用于 SQL 思维的 ChromaDB

    您好,chroma db 是一个矢量数据库,对于使用 genai 应用程序非常有用。在本文中,我将通过查看 mysql 中的类似关系来探索如何在 chroma db 上运行查询。 模式 与 sql 不同,您无法定义自己的架构。在 chroma 中,您会获得固定的列,每个列都有自己的用途: impor…

    2025年12月13日
    000
  • Python 复合条件表达式中的短路

    本文介绍了 python 复合条件表达式中的短路求值如何通过在结果确定后立即停止求值来提高效率。 要理解 python 中复合条件表达式中的短路概念,熟悉逻辑运算符“and”和“or”非常重要。下表总结了这些运算符的逻辑结果。 表 1“与”和“或”运算符注意:来自模块 3:了解 python 决策控…

    2025年12月13日
    000

发表回复

登录后才能评论
关注微信