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中,如果条件表达式中包含“and”运算符,那么只有在第一个条件为真的情况下,后面的条件才会进行判断;如果条件表达式中包含“or”运算符,那么只有在…

    python 2023年5月18日
    00
  • Python进阶之自定义对象实现切片功能

    我会详细讲解“Python进阶之自定义对象实现切片功能”的完整攻略。在Python中,我们可以通过对象的切片操作来获取一个特定范围的对象切片。如果要自定义对象的切片操作,可以通过重载对象的__getitem__方法来实现。 步骤如下: 1.确定切片参数首先,我们需要确定切片参数——切片范围和步长。切片范围可以用start,stop和step三个参数来表示。其…

    python 2023年6月5日
    00
  • Python clip与range函数保姆级使用教程

    Python clip与range函数保姆级使用教程 简介 Python中的clip()函数和range()函数是常用的函数之一。clip()函数用于限制数值在一定范围内,而range()函数则用于创建指定范围内的整数序列。本文将详细讲解这两个函数的使用方法及示例。 clip()函数 函数定义 clip()函数用于将数字限制在一个指定范围内。当数字小于范围最…

    python 2023年6月3日
    00
  • Python实现自动发消息自定义内容的操作代码

    实现Python自动发消息自定义内容的操作代码可以使用Python的第三方库通过调用API实现。其中比较常用的包括requests和telegram-bot-api。 确定使用的API和相关库 首先,需要确定使用的API和相关库。比较常见的有微信、Telegram、钉钉等,这里以Telegram为例。 然后,需要安装使用相关库。Python中有许多Teleg…

    python 2023年5月19日
    00
  • Python3.4学习笔记之常用操作符,条件分支和循环用法示例

    Python3.4学习笔记之常用操作符,条件分支和循环用法示例 在Python3.4中,有很多常用的操作符、条件分支和循环用法,这些知识点是Python编程的基础,非常值得我们学习。 常用操作符 Python3.4中常用的操作符有算术操作符、比较操作符、逻辑操作符等。接下来我们分别来介绍一下。 算术操作符 Python3.4中的算术操作符主要有加法+、减法-…

    python 2023年6月5日
    00
  • python3 中的几种除法介绍,小数的不同显示

    下面是 Python3 中几种除法的介绍: 1. Python3 中的两种除法 在 Python3 中,除法主要分为两种类型:整数除法和浮点数除法。 整数除法(//):这种除法会得到一个整数解,这个解是向下取整的商,结果不包含小数部分。 浮点数除法(/):这种除法会得到精确的商,结果一定包含小数部分,可以是浮点数型的。 下面分别对这两种除法做详细说明: a.…

    python 2023年6月3日
    00
  • Python实现自动识别并批量转换文本文件编码

    Python实现自动识别并批量转换文本文件编码 在文本处理中,文本文件的编码格式可能会出现不一致的情况,这会导致文本文件无法正确地被读取或处理。Python提供了多种方法实现自动识别并批量转换文本文件编码的功能。本文将总结Python实现自动识别并批量转换文本文件编码的方法,并提供两个示例说明。 方法一:使用chardet库 chardet是Python中一…

    python 2023年5月14日
    00
  • 基于Python实现文件的压缩与解压缩

    基于Python实现文件的压缩与解压缩 文件压缩和解压缩是日常工作中常见的操作,Python提供了多种压缩和解压缩的库,如zipfile、gzip、tarfile等。本文将介绍如何使用Python实现文件的压缩和解压缩,包括使用zipfile库进行zip格式文件的压缩和解压缩,及使用gzip库进行gzip格式文件的压缩和解压缩。 使用zipfile库进行zi…

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