python 异常处理总结

yizhihongxing

Python 异常处理总结

异常的概念

异常是程序运行过程中出现的一些不正常的情况,如:输入错误、读取文件失败、网络连接异常等等。

异常处理的机制

Python 通过 try...except...finally 语句来处理异常。try 语句块包含了需要观察异常的代码,如果出现异常,则会跳转到 except 语句块中,执行指定的异常处理代码。finally 语句块中是一些无论是否有异常都需要执行的代码。

异常处理的方式

1. 捕获指定类型的异常

try:
    # 尝试执行的代码
    a = 1 / 0  # ZeroDivisionError
except ZeroDivisionError:  # 捕获指定类型的异常
    # 如果出现 ZeroDivisionError 异常,则执行此处代码
    print("除数不能为0")

此处使用了 except 后面跟 ZeroDivisionError,表示只捕获 ZeroDivisionError 异常类型。

2. 捕获多个异常类型

try:
    # 尝试执行的代码
    a = int("abc")  # ValueError
    b = 1 / 0  # ZeroDivisionError
except (ValueError, ZeroDivisionError):  # 捕获多个异常类型
    # 如果出现 ValueError 或 ZeroDivisionError 异常,则执行此处代码
    print("代码有误,请检查输入")

此处使用了 except 后面跟多个异常类型的元组,表示捕获多个异常类型。

3. 捕获所有异常类型

try:
    # 尝试执行的代码
    a = int("abc")  # ValueError
    b = 1 / 0  # ZeroDivisionError
except Exception as e:  # 捕获所有异常类型,并输出异常信息
    # 如果出现任何异常,则执行此处代码
    print("出现异常:", e)

此处使用了 except 后面没有跟任何异常类型,表示捕获所有异常类型。

重要提示:如果只写一个空的 except,一旦有异常发生,程序就会一直执行,相当于没有异常处理。因此,写 except 时一定要慎重,最好指定捕获的异常类型。

4. 抛出自定义的异常

# 自定义异常类,必须继承 Exception 类
class MyException(Exception):
    pass

try:
    # 尝试执行的代码
    raise MyException("自定义异常")  # 抛出自定义异常
except MyException as e:
    # 捕获自定义的异常,并输出异常信息
    print("出现自定义异常:", e)

此处使用了 raise 关键字来抛出自定义的异常,然后使用 except 捕获自定义的异常。

异常的执行顺序

当程序执行时,遇到异常会尝试寻找与之匹配的 except,如果找到了则执行对应的异常处理代码。如果当前层次没有找到匹配的异常处理代码,则将异常“传递”给上一层级,继续寻找匹配的异常处理代码。

例如:

try:
    try:
        a = 1 / 0
    except NameError:
        print("处理 NameError 异常")
except ZeroDivisionError:
    print("处理 ZeroDivisionError 异常")

这个程序中抛出了 ZeroDivisionError 异常,但是在第一个 try 中没有找到匹配的异常处理代码,因此将异常“传递”给了第二个 try,在第二个 try 中找到了匹配的异常处理代码,最后输出 “处理 ZeroDivisionError 异常”。

示例1

# 程序当中没有捕获异常,会崩溃
a = 1 / 0

此例中,由于除数为 0,程序会抛出 ZeroDivisionError 异常,但是程序没有对其进行异常处理,因此程序执行时就会崩溃。

示例2

try:
    a = int("abc")
except ValueError:
    print("输入非数字")

此例中,程序尝试将字符串 "abc" 转换成整数,但是由于字符串无法被转换成整数,会抛出 ValueError 异常。程序使用 try...except 结构对 ValueError 异常进行了处理,输出了友好的提示信息。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python 异常处理总结 - Python技术站

(0)
上一篇 2023年6月3日
下一篇 2023年6月3日

相关文章

  • Java程序中实现调用Python脚本的方法详解

    Java程序中实现调用Python脚本的方法详解 在Java程序的开发过程中,有时需要调用Python脚本来完成一些任务,比如数据分析、机器学习等。本文将详细介绍Java程序中实现调用Python脚本的方法,以及具体的实现过程和示例说明。 1. 调用Python脚本的方式 Java程序中调用Python脚本有多种方式,比如使用ProcessBuilder或者…

    python 2023年6月3日
    00
  • Python新年炫酷烟花秀代码

    下面我就为大家详细讲解一下“Python新年炫酷烟花秀代码”的完整攻略。 简介 Python新年炫酷烟花秀代码是一个通过Python代码生成烟花效果的程序,可以在终端中播放出美丽的烟花效果,给人留下深刻的印象。 程序代码 以下是完整的Python代码: import random import colorama import time def explode…

    python 2023年5月31日
    00
  • 使用scrapy ImagesPipeline爬取图片资源的示例代码

    使用Scrapy内置的ImagesPipeline可以非常方便地爬取网页上的图片资源。下面是完整的攻略和示例代码: 1. 在settings.py中设置ImagesPipeline 首先需要在项目的settings.py文件中进行一些配置。具体如下: ITEM_PIPELINES = { ‘scrapy.pipelines.images.ImagesPipe…

    python 2023年5月19日
    00
  • python numpy之np.random的随机数函数使用介绍

    标题:Python NumPy之np.random的随机数函数使用介绍 Python NumPy是一个用于科学计算的重要库,其中np.random作为NumPy的一个子模块,在数据处理和机器学习中被广泛应用。在np.random中有许多生成随机数的函数,可以通过这些函数生成一些数字序列,以便模拟、实验和建模等。本篇攻略将详细介绍np.random中主要随机数…

    python 2023年6月3日
    00
  • 详解Python如何巧妙实现数学阶乘n!

    详解Python如何巧妙实现数学阶乘n! 什么是阶乘? 阶乘,即n的阶乘,表示为n!,是指从1到n相乘之积,其中n是一个正整数。 例如: 5! = 5 * 4 * 3 * 2 * 1 = 120 Python如何实现阶乘求解? Python中可以使用自带的math库或者自己编写函数实现阶乘的求解。其中,使用自带的math库可以直接使用其自带的阶乘函数fact…

    python 2023年5月18日
    00
  • Python绘制简单散点图的方法

    下面是绘制简单散点图的方法攻略。 前置条件 在绘制散点图之前需要先安装python的可视化库matplotlib。可以通过在命令行中输入以下命令进行安装: pip install matplotlib 绘制简单散点图的方法 散点图通常用来表示两个连续变量之间的关系。在matplotlib中,我们可以使用scatter方法来绘制散点图。 import matp…

    python 2023年5月19日
    00
  • Python 列表反转显示的四种方法

    Python列表反转显示的四种方法 在Python中,列表(List)是一种常用的数据类型,它可以存储多个元素,并且这些元素可以是同一种或不同的类型。本文将详细讲解Python中列表反转显示的四种方法,包括使用reverse()方法、使用切片、使用reversed()函数和使用[::-1]切片,同时提供多个示例说明。 列表反转显示 方法一:使用reverse…

    python 2023年5月13日
    00
  • Python中元组的概念及应用小结

    Python中元组的概念及应用小结 什么是元组 元组(tuple)是一种有序的不可变序列类型,它可以用来存储一组数据,一旦创建就无法修改。元组使用小括号 () 来表示,可以包含任意类型的数据,包括数字、字符串、列表、字典、甚至是另一个元组。 创建元组 创建元组非常简单,只需使用一对小括号 () ,将多个数据用逗号 , 隔开即可,如下所示: # 创建一个包含多…

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