python异常处理try except过程解析

下面是关于Python异常处理的完整攻略:

1. 异常处理概述

Python 中的异常处理,主要是利用 try...except 块来处理,即在可能出现异常的代码块中尝试运行异常代码,如果出现异常,则执行相应的处理代码,例如打印异常信息或执行特定的操作,而不是直接抛出异常。

在 Python 中,所有的异常都是从基类 BaseException 继承而来的,常见的异常类还有 ExceptionZeroDivisionErrorIndexErrorKeyError,分别表示异常、除数为零、下标越界和不存在的键。

2. try...except 块

在 Python 中用 try...except 语句来进行异常处理。try 语句块中的代码称为 “尝试块”,如果没有出现异常,就可以顺利执行 try 语句块中的代码;而如果在 try 语句块中出现了异常,Python 会结束 try 块中剩余的语句,转而去执行异常处理代码,即 except 语句块。

举个例子,下面的代码就是一个 try...except 块:

try:
    num = int(input("请输入一个数字:"))
    print(num)
except ValueError:
    print("输入的不是数字,请重新输入")

这段代码要求用户输入一个数字,如果用户输入的不是数字,就会抛出 ValueError 异常并被 except 语句块捕捉。捕捉到异常后,会执行 except 语句块中的代码。

3. 多个 except 块

一个 try 块可以对应多个 except 块,每个 except 块可以捕捉不同类型的异常。多个 except 块会按照顺序依次匹配异常,如果匹配成功,则执行对应的 except 语句块,如果没有匹配成功,则异常继续上抛,直到被处理或程序结束。

例如,下面的这段代码通过多个 except 块分别处理不同类型的异常:

try:
    a = 1 / 0
except ZeroDivisionError:
    print("除数为 0")
except Exception as e:
    print("其他异常:", e)

如果程序运行到 a = 1 / 0 时出现 ZeroDivisionError,则执行对应的 except 语句块;如果出现其他类型的异常,则执行第二个 except 语句块。

4. else 语句块

在 try...except 语句块中,还可以加入一个 else 语句块,用于处理没有出现异常时执行的代码。else 语句块会在 try 块完成后执行,即 try 块没有出现任何异常。

例如,下面的代码中在 else 语句块中打印了计算结果:

try:
    a = int(input("输入被除数:"))
    b = int(input("输入除数:"))
    c = a / b
except ZeroDivisionError:
    print("除数不能为 0")
else:
    print("计算结果:", c)

如果用户输入的被除数和除数都是数字时,程序不会出现异常,此时会执行 else 语句块,输出计算结果。

5. finally 语句块

在 try...except 语句块中,还可以加入一个 finally 语句块,该语句块用于不管异常是否发生都执行的代码,通常用来进行清理工作,例如关闭文件、释放资源等。

例如,下面的代码中 finally 语句块用来关闭文件:

f = None
try:
    f = open("example.txt", "r")
    # 处理文件
except Exception as e:
    print("发生异常:", e)
finally:
    if f:
        f.close()

在这个代码中,f 是一个打开的文件对象,当程序执行到 f.close() 时,不管是否发生异常,都会执行 finally 语句块中的代码,以确保文件得以关闭。

示例一

下面的代码中,对于用户输入的不是数字和除数为 0 的两种情况分别进行异常处理:

try:
    num1 = int(input("请输入被除数:"))
    num2 = int(input("请输入除数:"))
    result = num1 / num2
except ValueError:
    print("输入不是数字,请重新输入")
except ZeroDivisionError:
    print("除数不能为 0,请重新输入")
else:
    print(result)

在这个代码中,如果用户输入了一个非数字的字符,在尝试将其转换为整数时,程序会触发 ValueError 异常;如果用户输入的是 0,程序会触发 ZeroDivisionError 异常。如果输入的被除数和除数都合法,程序会计算它们的商并输出结果。

示例二

下面的代码演示了通过 try...except 语句块来防止出现错误而导致程序崩溃的过程:

try:
    with open("example.txt", "r") as f:
        lines = f.readlines()
except FileNotFoundError:
    print("文件不存在")
else:
    for line in lines:
        print(line.strip())

在这个代码中,我们试图打开一个名为 example.txt 的文件,如果文件不存在则触发 FileNotFoundError 异常,否则读取文件内容并输出每行的内容。使用了 with 语句可以确保文件的正确关闭,所以不需要额外再加入 finally 语句块进行文件关闭操作。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python异常处理try except过程解析 - Python技术站

(0)
上一篇 2023年5月13日
下一篇 2023年5月13日

相关文章

  • python分布式环境下的限流器的示例

    Python分布式环境下的限流器的示例 在分布式环境下,限流器是一种常见的工具,用于控制并发请求的数量,防止系统过载。本文将讲解Python分布式环境下的限流器的示例,包括以下几个方面: 理解限流器的原理 使用Redis实现限流器 使用Zookeeper实现限流器 实践示例 理解限流器的原理 限流器是一种控制并发请求的工具,用于防止系统过载。限流器的原理是在…

    python 2023年5月15日
    00
  • 详解Python如何批量检查图像是否可用

    Python如何批量检查图像是否可用 本攻略介绍使用Python批量检查图像是否可用的方法。 步骤一:安装必要的Python库 鉴于我们将要使用Pillow库对图像进行操作,因此我们需要先安装一下Pillow库。你可以在终端中使用如下命令进行安装。 pip install Pillow 步骤二:撰写Python脚本 接着,我们需要使用Python对图像进行处…

    python 2023年6月3日
    00
  • Python colormap库的安装和使用详情

    下面我将为你详细讲解“Python colormaps 库的安装和使用详情”,包括安装步骤、基本用法和两个示例。 Python Colormap 库简介 Python Colormap库是Python的一个库,用于生成颜色映射表。颜色映射表是将数据值映射到表示颜色的RGB值的过程,用于数据可视化和绘图。Python Colormap库提供了一些流行的颜色映射…

    python 2023年5月14日
    00
  • Python制作词云图代码实例

    下面是“Python制作词云图代码实例”的完整攻略: 1. 准备工作 安装Python环境及相关的库:jieba,wordcloud 准备好需要生成词云图的文本 2. 数据预处理 首先,需要对文本进行预处理,将其中的无用字符剔除,只留下有效的文本部分,例如: import jieba # 读取文本文件 with open(‘input.txt’, ‘r’, …

    python 2023年5月31日
    00
  • Python中Qslider控件实操详解

    Python中QSlider控件实操详解 QSlider控件是Qt中用于显示范围值的滑块控件,可以用来设置某一个数值的大小范围,常用于视觉化的交互操作,它非常常见。在Python中,使用QSlider控件非常简单,下面详细介绍如何实现。 QSlider控件的属性 在使用QSlider控件之前,先了解一下控件的属性: QSlider.setOrientatio…

    python 2023年6月3日
    00
  • Python json.loads ValueError,需要分隔符

    【问题标题】:Python json.loads ValueError, expecting delimiterPython json.loads ValueError,需要分隔符 【发布时间】:2023-04-06 00:50:01 【问题描述】: 我将一个 postgres 表提取为 json。输出文件包含如下行: {“data”: {“test”: 1…

    Python开发 2023年4月6日
    00
  • 正则表达式基础学习一文入门

    正则表达式是一种用于匹配字符串的模式。在Python中,我们可以使用re模块来进行正则表达式的匹配。本文将介绍正则表达式的基础知识,包括元字符、字符集、重复、分组等内容。 元字符 元字符是正则表达式中具有特殊含义的字符。以下是一些常用的元字符: .:匹配任意字符,除了换行符。 ^:匹配字符串的开头。 $:匹配字符串的结尾。 *:匹配前面的字符零次或多次。 +…

    python 2023年5月14日
    00
  • python函数参数(必须参数、可变参数、关键字参数)

    下面是对Python函数参数的详细讲解。 函数参数概述 在Python中,函数参数分为三种类型:必须参数、可变参数和关键字参数。 必须参数是指在函数调用中必须要传递的参数,没有传递就会报错;可变参数是指在函数调用中可以传入任意个数的参数;关键字参数是指在函数调用中,通过指定参数名来传递参数。 必须参数 必须参数是指在函数的定义中必须声明的参数。当函数被调用时…

    python 2023年6月5日
    00
合作推广
合作推广
分享本页
返回顶部