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中,我们可以使用re模块提供的函数来操作正则表达式。本攻略将详细讲解Python中正则表达式的使用,包括正则表达式的基本语法、常用函数和应用技巧。 正则表达式的基本语法 正则表达式由普通字符和元字符组成,用于匹配文本中的模式…

    python 2023年5月14日
    00
  • 教你使用一行Python代码玩遍童年的小游戏

    当你点击进入我们网站文章“教你使用一行Python代码玩遍童年的小游戏”,你将看到以下的完整攻略: 教你使用一行Python代码玩遍童年的小游戏 简介 在这篇文章中,我们将通过一行Python代码重新体验一下我们小时候喜欢玩的小游戏。这个小游戏名字叫做“猜数字”。在游戏中,计算机会随机选择一个数字,你需要通过不断猜测来找到正确的数字。 操作步骤 1. 安装P…

    python 2023年5月18日
    00
  • Python sqlalchemy时间戳及密码管理实现代码详解

    十分感谢你对“Python sqlalchemy时间戳及密码管理实现代码详解”的关注。 本文主要介绍如何使用 Python 的 sqlalchemy 库实现时间戳和密码管理功能。 一、使用 sqlalchemy 实现时间戳功能 在使用 sqlalchemy 的 ORM 进行数据库操作时,可以通过指定字段类型为 DateTime 类型,并设置为默认从数据库获取…

    python 2023年6月2日
    00
  • python 自动化将markdown文件转成html文件的方法

    Python是一种流行的编程语言,可以用于自动化将Markdown文件转换为HTML文件。以下是Python自动化将Markdown文件转换为HTML文件的详细攻略: 安装Markdown库 首先需要安装Markdown库。可以使用pip命令进行安装: pip install markdown 将Markdown文件转换为HTML文件 使用Markdown库…

    python 2023年5月14日
    00
  • python如何实现视频转代码视频

    视频转代码是指将视频中的内容转换为对应的代码。Python中有一些工具和库可以实现这个目标。下面是实现视频转代码视频的完整攻略: 1. 使用OpenCV解析视频 OpenCV是一个计算机视觉库,可以用于读取视频、并从视频中提取图像。以下是使用OpenCV读取视频的代码示例: import cv2 # 打开视频文件 cap = cv2.VideoCapture…

    python 2023年6月2日
    00
  • 基于python实现FTP文件上传与下载操作(ftp&sftp协议)

    基于Python实现FTP文件上传与下载操作(FTP&SFTP协议) FTP(文件传输协议)是一种用于向互联网上传送文件的标准协议,而SFTP(SSH文件传输协议)则是FTP的安全替代。在Python中,通过ftplib库,我们可以使用FTP协议上传和下载文件,通过paramiko库,我们可以使用SFTP协议进行同样的操作。 本文将详细介绍如何基于P…

    python 2023年6月5日
    00
  • python 镜像环境搭建总结

    Python 镜像环境搭建总结 为什么要搭建 Python 镜像环境 Python 软件包较多,下载速度慢是一个普遍存在的问题。为了解决这个问题,建议用户使用 Python 国内的镜像源。 镜像源的选择 目前国内的 Python 镜像源有多个,推荐以下两个: 阿里云 https://mirrors.aliyun.com/pypi/simple/ 清华大学 h…

    python 2023年6月3日
    00
  • Python开发.exe小工具的详细步骤

    下面详细讲解“Python开发.exe小工具的详细步骤”的完整攻略。 1.安装pyinstaller pyinstaller是一个将Python代码打包成可执行文件的第三方库。在命令行中输入以下命令,即可安装pyinstaller: pip install pyinstaller 2.编写Python代码 编写想要转换为exe文件的Python代码,代码应当…

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