广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Python异常处理的方法实例分析
  • 701
分享到

Python异常处理的方法实例分析

2023-06-29 12:06:07 701人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

这篇文章主要介绍了python异常处理的方法实例分析的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Python异常处理的方法实例分析文章都会有所收获,下面我们一起来看看吧。什么是异常与异常处理异常 &m

这篇文章主要介绍了python异常处理的方法实例分析的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Python异常处理的方法实例分析文章都会有所收获,下面我们一起来看看吧。

什么是异常与异常处理

异常 —> 可以理解为不同寻常。

正常情况下,我们的程序是自上而下的逐行执行,执行到最后一行才会终止程序的执行。而异常的情况会导致我们的程序半途而废停止了执行。一般情况下的停止执行都是因为我们的程序出错而造成的,而异常就是错误,异常的出现会导致我们的程序崩溃并停止运行。这在我们的工作中是非常不友好的!

纵观程序的一生,都不能保证说程序一定不会出错。所以当遇到错误的时候,为了不影响程序的执行,我们就需要对这些异常进行处理, Python 中的异常机制,可以监控并捕获到异常。当程序出现错误的时候对异常进行临时妥善的处理,就可以使得程序继续正常的运行。

总结

异常的本质就是错误

异常的出现会导致程序的崩溃且会停止执行

监控异常并捕获,将造成异常的程序进行妥善的处理可以使得程序能够继续正常的运行

接下来我们就快快的看一下 究竟如何捕获异常并进行异常处理的语法吧。

异常的语法

try:                   # 异常的关键字,尝试的意思    <代码块1>               # 被 try 关键字检查并保护的业务代码块    except <异常的类型>:         # 发现异常后的处理关键字,会跟随一个错误类型(异常类型),异常类型可以不填写    <代码块2>               # try 的代码块出现错误之后,就会执行 except 的代码块                       # 这里一般都是当 try 代码块出现错误之后的补救逻辑

来看一个简单的示例:

1 / 0# 我们都知道 0 不能被整除,所以产生了下面这样的报错# >>> 执行结果如下# >>> ZeroDivisionError: division by zero # >>> 我们管代码的报错叫做 异常的抛出 ,这个报错信息告诉了我们为什么报错,同时业务也会被停止。# >>> 在程序中,我们是允许出错的,但是需要对可能遇见的异常捕获,# >>> 进行合理的处理,让程序遇到异常可以合理的运行

看一下针对上文示例的异常进行的捕获

try:    1 / 0except:    print('注意:0 不可以被 1 整除')    print('ZeroDivisionError: division by zero 已捕获,程序继续执行')# >>> 执行结果如下# >>> 注意:0 不可以被 1 整除# >>> ZeroDivisionError: division by zero 已捕获,程序继续执行# >>> 虽然 try 代码块抛出了异常,但是我们通过 except 进行了合理的规避,使得我们的程序继续向下执行

接下来我们再利用我们之前学到的知识点 upper() 函数做一个小案例:

定义一个 upper ,利用 upper() 函数 。将传入的字符串转为大写,如传入参数非 字符串 ,捕获该异常并处理。

def upper(str_data):    new_str = None    try:        new_str = str_data.upper()    except:        print('upper() 函数转换字符大写失败!', '返回结果为:', new_str)    return new_strresult = upper('test')print('传入参数返回值为:', result)# >>> 执行结果如下:# >>> 传入参数返回值为: TESTresult = upper(1)print(result)# >>> 执行结果如下:# >>> upper() 函数转换字符大写失败! 返回结果为: None

捕获通用异常

刚刚我们通过 try&hellip;except&hellip; 捕获了异常并进行了合理的处理,但是我们并不知道错误的原因是什么。所以我们必须获取 异常的类型 ,首先我们来学习一下如何获取通用异常类型, 通用异常类型 是我们无法确定是那种异常的情况下使用的一种捕获方法。

用法如下:

try:    <代码块>except Exception as e:        # 把通用异常的错误原因转换成变量 e , as 为关键字                            # 也可以理解为 将 Exception 通用异常类型 起一个别名 e                            # e 变量名可以起任意名字,一般约定成俗都会使用 e 作为异常捕获的变量名                            # e 就是 error 的缩写    <异常代码块>

通用异常捕获示例如下:

def upper(str_data):    new_str = None    try:        new_str = str_data.upper()    except Exception as e:        print('upper() 函数转换字符大写失败!', '返回结果为:{}'.fORMat(e))    return new_strresult = upper(1)print(result)# >>> 执行结果如下:# >>> upper() 函数转换字符大写失败! 返回结果为:'int' object has no attribute 'upper'

捕获具体异常

捕获具体的异常就是我们可以确定在 try 的代码块中会出现哪种具体的异常类型,并将其捕获的方法。语法方面与通用异常一样,在异常类型区域书写 具体的异常类型 就可以了。

我们以上文的 ZeroDivisionError: division by zero 为例

try:    1 / 0except ZeroDivisionError as e:# 书写指定的异常类型:ZeroDivisionError    # ZeroDivisionError 是Python内置的具体异常:0不能被整除    print(e)# >>> 执行结果如下:# >>> division by zero

小节:思考一个问题,工作中我们是使用 通用的异常 还是 具体的异常 呢?

从方便的角度来说,使用通用的异常会比较简单。开发成本低,不需要关心具体的异常类型是什么。其实 Exception 也不知知道具体的异常是哪一种类型,它需要去浩瀚的异常库查找,找到之后进行对应的抛出,虽然没有 具体指定异常 处理的那么快,但是这个处理速度也是无感知的。

如果我们能知道 try 代码块中 可能出现的具体异常类型,还是希望使用具体的异常类型。这样可以精准的对应错误;

==需要注意的是:当我们的 try 代码块中,没有出现我们指定的 具体异常 类型,代码执行依然是会报错的。==所以各有利弊,可以根据我们工作中业务的具体情况进行使用。

如何捕获多个异常

在我们平时的开发工作中,很可能在同一个代码块中出现多个异常类型。那么我们该如何支持多个异常的捕获呢?

其实异常的捕获是非常灵活的,也支持多个异常捕获的方式。

捕获多个异常 - 方法1

try:    result = 1 / 0except ZeroDivisionError as e1:    print(e1)except Exception as e2:            # 可以使用多个 except 来捕获多个异常    print('this is a public except , bug is %s' % e2)    # >>> 需要注意的是,当 except 代码块中有多个异常的时候,当捕获到第一个异常后,不会在继续往下捕获。

需要注意的是,当 except 代码块中有多个异常的时候,当捕获到第一个异常后,不会在继续往下捕获。

捕获多个异常 - 方法2

try:    result = 1 / 0except (ZeroDivisionError, Exception) as e:        # 在 except 后面的小括号内定义多个 异常类型 ,(小括号其实是元组)                                                # 当 except 后面使用元组包裹多个 异常类型 时,捕获到哪种异常类型就抛出哪种    print(e)

示例如下:

def test():    try:        print(name)     # 因为不存在 name 这个变量,所以会抛出一个 NameError: name 'name' is not defined 异常                        # 尝试捕获  NameError 异常    except (ZeroDivisionError, NameError) as e:        print(e)        print(type(e))test()# >>> 执行结果如下:# >>> name 'name' is not defined# >>> <class 'NameError'>

比较常用的捕获异常方法是第二种。

关于“Python异常处理的方法实例分析”这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对“Python异常处理的方法实例分析”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注编程网Python频道。

--结束END--

本文标题: Python异常处理的方法实例分析

本文链接: https://www.lsjlt.com/news/324664.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Python异常处理的方法实例分析
    这篇文章主要介绍了Python异常处理的方法实例分析的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Python异常处理的方法实例分析文章都会有所收获,下面我们一起来看看吧。什么是异常与异常处理异常 &m...
    99+
    2023-06-29
  • Python异常处理实例分析
    这篇文章主要讲解了“Python异常处理实例分析”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python异常处理实例分析”吧!那么什么是异常呢?举个例子:这里当然假设用户的输入是正确的,但...
    99+
    2023-07-02
  • Python中的异常处理实例分析
    一、什么是异常在python中,错误触发的异常如下二、异常的种类在python中不同的异常可以用不同的类型去标识,一个异常标识一种错误。1 、常用异常类AttributeError 试图访问一个对象没有的树形,比如foo.x,但是foo没有...
    99+
    2023-05-16
    Python
  • Python中的Selenium异常处理实例分析
    本篇内容介绍了“Python中的Selenium异常处理实例分析”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!在进行爬虫爬取淘宝商品信息时候...
    99+
    2023-06-30
  • Python异常处理举例分析
    这篇文章主要讲解了“Python异常处理举例分析”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python异常处理举例分析”吧!异常处理在项目开发中,异常处理是不可或缺的。异常处理帮助人们d...
    99+
    2023-06-02
  • python中with和异常处理实例分析
    这篇“python中with和异常处理实例分析”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“python中with和异常处理...
    99+
    2023-06-27
  • Python异常处理机制的示例分析
    这篇文章将为大家详细讲解有关Python异常处理机制的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。什么是异常?def num(a, b):   ...
    99+
    2023-06-22
  • SpringBoot中异常处理实例分析
    这篇文章主要介绍“SpringBoot中异常处理实例分析”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“SpringBoot中异常处理实例分析”文章能帮助大家解决问题。一、背景在我们编写程序的过程中,...
    99+
    2023-06-30
  • 分析Python异常处理
    本篇内容主要讲解“分析Python异常处理”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“分析Python异常处理”吧!  “你不可能总是对的”  甚至计算机也会有失误的时候。当然程序员也不例外,...
    99+
    2023-06-01
  • C#中类的异常处理实例分析
    今天小编给大家分享一下C#中类的异常处理实例分析的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。前言日常编码过程中,最重要的技...
    99+
    2023-06-29
  • python异常时语句处理的示例分析
    这篇文章给大家分享的是有关python异常时语句处理的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。Python主要用来做什么Python主要应用于:1、Web开发;2、数据科学研究;3、网络爬虫;4、嵌...
    99+
    2023-06-14
  • Java异常处理机制实例分析
    这篇文章主要介绍“Java异常处理机制实例分析”,在日常操作中,相信很多人在Java异常处理机制实例分析问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Java异常处理机制实例分析”的疑惑有所帮助!接下来,请跟...
    99+
    2023-06-29
  • MySQL异常处理的示例分析
    这篇文章给大家分享的是有关MySQL异常处理的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。针对存储过程 、触发器或函数内部语句可能发生的错误或警告信息,需要进行相关异常...
    99+
    2022-10-18
  • Scala异常处理的方法深入分析
    目录Scala异常处理异常处理的概述Scala中的异常种类Scala中的异常格式Scala中的异常示例Scala中输出异常结果的方法常用的方法特有的类和方法语法示例Scala自定义异...
    99+
    2023-05-14
    Scala异常处理 Scala异常处理机制
  • python常见异常分类与处理方法
    Python常见异常类型大概分为以下类:    1.AssertionError:当assert断言条件为假的时候抛出的异常    2.AttributeError:当访问的对象属性不存在的时候抛出的异常    3.IndexError:超...
    99+
    2023-01-31
    异常 常见 方法
  • SpringMVC异常处理机制与自定义异常处理方式的示例分析
    这篇文章主要介绍SpringMVC异常处理机制与自定义异常处理方式的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!提到异常处理,就不得不提HandlerExceptionResolvers,我们的Dispat...
    99+
    2023-06-25
  • React16中异常处理的示例分析
    这篇文章主要介绍React16中异常处理的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!异常处理在 React 15.x 及之前的版本中,组件内的异常有可能会影响到 Reac...
    99+
    2022-10-19
  • Java中异常处理的示例分析
    这篇文章主要介绍Java中异常处理的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!异常的定义在java中,异常就是java在编译、运行或运行过程中出现的错误总共有三种:1.编译错误 2.运行错误 3.逻辑错误...
    99+
    2023-06-25
  • Python异常断言实例分析
    本篇内容介绍了“Python异常断言实例分析”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!断言是判断一个表达式,在表达式为 False 的时...
    99+
    2023-06-29
  • Python字典的常用方法实例分析
    这篇文章主要讲解了“Python字典的常用方法实例分析”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python字典的常用方法实例分析”吧!字典添加与修改方法利用 [ ] 处理看到 [] 我...
    99+
    2023-06-29
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作