学Python的漫画漫步进阶 -- 第十步.异常处理

2024-01-20 04:40

本文主要是介绍学Python的漫画漫步进阶 -- 第十步.异常处理,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

学Python的漫画漫步进阶 -- 第十步.异常处理

  • 十、异常处理
    • 10.1 第一个异常——除零异常
    • 10.2 捕获异常
      • 10.2.1 try-except语句
      • 10.2.2 多个except代码块
      • 10.2.3 多重异常捕获
      • 10.2.4 try-except语句嵌套
    • 10.3 使用finally代码块释放资源
    • 10.4 自定义异常类
    • 10.5 动动手——手动引发异常
    • 10.6 练一练
    • 10.7 异常处理的总结

十、异常处理

为增强程序的健壮性,我们也需要考虑异常处理方面的内容。例如,在读取文件时需要考虑文件不存在、文件格式不正确等异常情况。这就是本章要介绍的异常处理。

在Python中,异常处理是一种重要的编程技术,用于处理程序运行时发生的错误。Python提供了几个内置的异常类型,如ZeroDivisionErrorTypeErrorValueError等,同时也允许用户自定义异常类型。

异常处理主要通过tryexceptfinallyraise关键字实现。下面是异常处理的基本框架:

try:# 尝试执行的代码块...
except ExceptionType:# 当在try部分的代码块中发生ExceptionType类型的异常时执行...
finally:# 无论是否发生异常,都会执行的代码块...

其中,ExceptionType可以是Python内置的异常类型,也可以是用户自定义的异常类型。在try代码块中,如果发生异常,程序会立即跳转到对应的except代码块中执行。如果没有异常发生,则执行完try代码块后跳过except代码块。无论是否发生异常,finally代码块中的代码总是会被执行。

除了使用tryexceptfinally关键字外,还可以使用raise关键字显式地抛出异常。例如:

raise ExceptionType("error message")

这会抛出一个类型为ExceptionType的异常,并附带一条错误消息。

在这里插入图片描述

10.1 第一个异常——除零异常

在数学中,任何整数都不能除以0,如果在计算机程序中将整数除以0,则会引发异常。
示例代码如下:

在这里插入图片描述

在这里插入图片描述

通过Python指令运行文件,输出结果:

在这里插入图片描述

在这里插入图片描述

10.2 捕获异常

我们不能防止用户输入0,但在出现异常后我们能捕获并处理异常,不至于让程序发生终止并退出。亡羊补牢,为时未晚。

在这里插入图片描述

10.2.1 try-except语句

异常捕获是通过try-except语句实现的,基本的try-except语句的语法如下。
在try代码块中包含在执行过程中可能引发异常的语句,如果没有发生异常,则跳到except代码块执行,这就是异常捕获。
try-except语句的执行流程如下。

在这里插入图片描述

在这里插入图片描述

示例代码如下:

在这里插入图片描述

通过Python指令运行文件,输出结果:

在这里插入图片描述
从运行的结果可以看出,在输入数字0后,异常发生,跳到except代码块执行。

在这里插入图片描述

将示例代码修改如下:

在这里插入图片描述

通过Python指令运行文件,输出结果:

在这里插入图片描述

10.2.2 多个except代码块

多条语句可能会引发多种不同的异常,对每一种异常都会采用不同的处理方式。针对这种情况,我们可以在一个try后面跟多个except代码块,语法如下:
在这里插入图片描述

示例代码如下:

在这里插入图片描述

通过Python指令运行文件,输出结果:

在这里插入图片描述

10.2.3 多重异常捕获

在这里插入图片描述

示例代码如下:

在这里插入图片描述

通过Python指令运行文件,输出结果:

在这里插入图片描述

10.2.4 try-except语句嵌套

try-except语句还可以嵌套,修改10.2.2节的示例代码如下:

在这里插入图片描述

通过Python指令运行文件,输出结果:

在这里插入图片描述

10.3 使用finally代码块释放资源

在这里插入图片描述
有时在try-except语句中会占用一些资源,例如打开的文件、网络连接、打开的数据库及数据结果集等都会占用计算机资源,需要程序员释放这些资源。为了确保这些资源能够被释放,可以使用finally代码块。
在try-except语句后面还可以跟一个finally代码块,语法如下:

在这里插入图片描述

无论是try代码块正常结束还是except代码块异常结束,都会执行finally代码块。

在这里插入图片描述
使用finally代码块的示例代码如下:

在这里插入图片描述
通过Python指令运行文件,输出结果:

在这里插入图片描述

10.4 自定义异常类

实现自定义异常类的示例代码如下:

在这里插入图片描述

10.5 动动手——手动引发异常

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

示例代码如下:
通过Python指令运行文件,输出结果:

在这里插入图片描述
在这里插入图片描述

10.6 练一练

1 请列举一些常见的异常。

2 手动引发异常的语句有哪些?()
A.throw
B.raise
C.try
D.except

3 判断对错:(请在括号内打√或×,√表示正确,×表示错误)。

1)每个try代码块都可以伴随一个或多个except代码块,用于处理try代码块中所有可能引发的异常。()

2)为了确保这些资源被释放,可以使用finally代码块。()

3)实现自定义异常类时,需要继承Exception类或其子类。()

4)为了提供程序的健壮性,我们应该对所有类型异常都进行捕获。()

5)一个整数除以0时会引发ValueError异常。()

10.7 异常处理的总结

异常处理是编程中的一个重要概念,它允许我们为可能出现的错误或异常情况做好准备,并采取适当的措施来处理这些异常。以下是关于异常处理的一些总结性观点:

  1. 错误和异常: 在编程中,错误和异常通常是指预料之外的运行时事件。这些事件可能导致程序无法正常运行,比如尝试打开不存在的文件、除以零等。

  2. 异常处理的重要性: 异常处理可以帮助我们编写更健壮、更可靠的代码。通过捕获和处理异常,我们可以防止程序在遇到问题时崩溃,而是提供有用的错误信息或者执行其他适当的操作。这也有助于开发人员更快地找到和修复问题。

  3. Python中的异常处理: Python有一套完整的异常处理机制,包括内置的异常类型(例如ValueErrorTypeError等)和自定义异常类型。可以使用try/except块来捕获和处理异常。

  4. try/except块: try/except块是Python中处理异常的主要方式。在try块中,我们尝试执行一些代码,如果在执行过程中发生异常,控制流将立即转移到except块,而不会执行try块之后的任何代码。

  5. finally块: finally块包含那些无论是否发生异常都需要执行的代码。这可以用来清理资源,例如关闭文件或者网络连接。

  6. 引发异常: 除了处理异常,Python还允许我们主动引发异常。这可以通过raise关键字实现,我们可以用它来抛出任何我们想要的异常。

  7. 异常链: 如果一个异常在处理过程中又引发了另一个异常,那么后一个异常将被“封装”在第一个异常中,形成异常链。可以使用.cause.context属性来访问异常链。

  8. 清理资源: 在Python中,使用上下文管理器(也称为with语句)可以自动清理资源,例如文件和锁等。当with语句结束时,Python会自动调用上下文管理协议中的所有方法,确保资源被正确清理。

  9. 自定义异常类型: Python允许我们定义自己的异常类型,这可以用来表示特定程序中可能出现的特定问题。我们可以通过继承内置的Exception类来创建自定义异常类型。

  10. 异常处理最佳实践:

    • 尽可能详细地捕获异常:只捕获那些你知道如何处理的异常,将其他所有异常交给上层处理或者直接让它们传播出去。
    • 记录错误信息:在捕获并处理异常后,最好将错误信息记录下来,以便于后续的问题追踪和分析。
    • 避免过度捕获:不要在一个except块中捕获太多类型的异常,这可能会隐藏一些错误信息。
    • 用finally块关闭资源:如果你在try块中打开了资源(例如文件),确保在finally块中关闭它们,以防止资源泄漏。
    • 设计良好的错误消息:给用户提供清晰、友好的错误消息,这可以帮助他们更好地理解问题并采取适当的行动。

通过合理使用异常处理,可以大大提高代码的可靠性和可维护性。

这篇关于学Python的漫画漫步进阶 -- 第十步.异常处理的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/624815

相关文章

Python开发文字版随机事件游戏的项目实例

《Python开发文字版随机事件游戏的项目实例》随机事件游戏是一种通过生成不可预测的事件来增强游戏体验的类型,在这篇博文中,我们将使用Python开发一款文字版随机事件游戏,通过这个项目,读者不仅能够... 目录项目概述2.1 游戏概念2.2 游戏特色2.3 目标玩家群体技术选择与环境准备3.1 开发环境3

Python中模块graphviz使用入门

《Python中模块graphviz使用入门》graphviz是一个用于创建和操作图形的Python库,本文主要介绍了Python中模块graphviz使用入门,具有一定的参考价值,感兴趣的可以了解一... 目录1.安装2. 基本用法2.1 输出图像格式2.2 图像style设置2.3 属性2.4 子图和聚

Python使用Matplotlib绘制3D曲面图详解

《Python使用Matplotlib绘制3D曲面图详解》:本文主要介绍Python使用Matplotlib绘制3D曲面图,在Python中,使用Matplotlib库绘制3D曲面图可以通过mpl... 目录准备工作绘制简单的 3D 曲面图绘制 3D 曲面图添加线框和透明度控制图形视角Matplotlib

一文教你Python如何快速精准抓取网页数据

《一文教你Python如何快速精准抓取网页数据》这篇文章主要为大家详细介绍了如何利用Python实现快速精准抓取网页数据,文中的示例代码简洁易懂,具有一定的借鉴价值,有需要的小伙伴可以了解下... 目录1. 准备工作2. 基础爬虫实现3. 高级功能扩展3.1 抓取文章详情3.2 保存数据到文件4. 完整示例

使用Python实现IP地址和端口状态检测与监控

《使用Python实现IP地址和端口状态检测与监控》在网络运维和服务器管理中,IP地址和端口的可用性监控是保障业务连续性的基础需求,本文将带你用Python从零打造一个高可用IP监控系统,感兴趣的小伙... 目录概述:为什么需要IP监控系统使用步骤说明1. 环境准备2. 系统部署3. 核心功能配置系统效果展

基于Python打造一个智能单词管理神器

《基于Python打造一个智能单词管理神器》这篇文章主要为大家详细介绍了如何使用Python打造一个智能单词管理神器,从查询到导出的一站式解决,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. 项目概述:为什么需要这个工具2. 环境搭建与快速入门2.1 环境要求2.2 首次运行配置3. 核心功能使用指

Python实现微信自动锁定工具

《Python实现微信自动锁定工具》在数字化办公时代,微信已成为职场沟通的重要工具,但临时离开时忘记锁屏可能导致敏感信息泄露,下面我们就来看看如何使用Python打造一个微信自动锁定工具吧... 目录引言:当微信隐私遇到自动化守护效果展示核心功能全景图技术亮点深度解析1. 无操作检测引擎2. 微信路径智能获

Python中pywin32 常用窗口操作的实现

《Python中pywin32常用窗口操作的实现》本文主要介绍了Python中pywin32常用窗口操作的实现,pywin32主要的作用是供Python开发者快速调用WindowsAPI的一个... 目录获取窗口句柄获取最前端窗口句柄获取指定坐标处的窗口根据窗口的完整标题匹配获取句柄根据窗口的类别匹配获取句

利用Python打造一个Excel记账模板

《利用Python打造一个Excel记账模板》这篇文章主要为大家详细介绍了如何使用Python打造一个超实用的Excel记账模板,可以帮助大家高效管理财务,迈向财富自由之路,感兴趣的小伙伴快跟随小编一... 目录设置预算百分比超支标红预警记账模板功能介绍基础记账预算管理可视化分析摸鱼时间理财法碎片时间利用财

Java 中的 @SneakyThrows 注解使用方法(简化异常处理的利与弊)

《Java中的@SneakyThrows注解使用方法(简化异常处理的利与弊)》为了简化异常处理,Lombok提供了一个强大的注解@SneakyThrows,本文将详细介绍@SneakyThro... 目录1. @SneakyThrows 简介 1.1 什么是 Lombok?2. @SneakyThrows