如何在Python中进行异常处理

 更新时间:2022年03月07日 11:45:37   作者:一只懐坏旭  
这篇文章主要介绍了如何在Python中进行异常处理,Python中使用用异常对象(exception object)表示异常情况,当程序运行遇到错误后,就会触发发异常,下文关于异常处理的相关内容,需要的小伙伴可以参考一下

一、抛出异常和自定义异常

Python中使用用异常对象(exception object)表示异常情况,当程序运行遇到错误后,就会触发发异常。相信大家在编码是都会遇到这种情况,那么如果异常对象并未被处理或捕捉,程序就会用报错然后终止执行。

1、raise语句

Python中的raise 关键字用于触发发一个异常,和我们熟悉的Java中的throw关键字相同,

如下所示:

>>>    def ThorwErr():
>>>      raise Exception("抛出一个异常")
>>>    # Exception: 抛出一个异常
>>>    ThorwErr()

如上raise关键字后面是抛出是一个通用的异常类型(Exception),但是在实际编码中我们抛出的异常越详细越好。Python在exceptions模块内建了很多的异常类型,我们用dir函数来查看exceptions中都有哪些的异常类型,

如下:

>>>    import exceptions
>>>    print dir(exceptions)

传递异常:

捕捉到了异常,要想重新引发它(传递异常),我们可以使用不带参数的raise语句:

>>>    class MuffledCalculator:
>>>      muffled = False
>>>    def calc(self,expr):
>>>        try:
>>>          return eval(expr)
>>>        except ZeroDivisionError:
>>>          if self.muffled:
>>>            print 'Division by zero is illegal'
>>>          else:
>>>            raise

2、自定义异常类型

Python中我们也可以定义自己的特殊异常类型,只需要继承Exception类即可,这里的继承既可以是直接继承,也可以是间接继承。

>>>    class selfExceptions(Exception):
>>>        pass

二、捕捉异常

java中的try/catch相似,在Python中使用try/except捕捉异常

try:
  print 2/0
except ZeroDivisionError:
  print '除数不能为0'

1、捕捉多个异常

使用except语句时我们只能捕捉其后声明了的那个异常类型,如果代码可能会抛出的是其他类型的异常,这时就需要再增加一个except语句了,

如下:

try:
  print 2/'0'
except ZeroDivisionError:
  print '除数不能为0'
except Exception:
  print '其他类型异常'

为了捕获多个异常,除了声明多个except语句之外,还可以在一个except语句之后将多个异常作为元组列出来即可:

try:
  print 2/'0'
except (ZeroDivisionError,Exception):
  print '发生了一个异常'

2、获取异常信息

每个异常都会有一些异常信息,我们可以把这些异常打印出来查看,便于修改代码:

try:
  print 2/'0'
except (ZeroDivisionError,Exception) as e:
  # unsupported operand type(s) for /: 'int' and 'str'
  print e

三、finally子句

Java中一样,finally不管try子句内部是否有异常发生,都会执行finally子句内的代码。一般使用时,finally常常使用用于关闭文件或者在Socket中。

try:
  print 2/'0'
except (ZeroDivisionError,Exception):
  print '发生了一个异常'
finally:
  print '不管是否发生异常都执行'

到此这篇关于如何在Python中进行异常处理的文章就介绍到这了,更多相关Python中进行异常处理内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 解决Python print 输出文本显示 gbk 编码错误问题

    解决Python print 输出文本显示 gbk 编码错误问题

    这篇文章主要介绍了解决Python print 输出文本显示 gbk 编码错误问题,本文给出了三种解决方法,需要的朋友可以参考下
    2018-07-07
  • Python中不同进制的语法及转换方法分析

    Python中不同进制的语法及转换方法分析

    这篇文章主要介绍了Python中不同进制的语法及转换方法,结合实例形式分析了Python不同进制的表示方法及相互转换方法,需要的朋友可以参考下
    2016-07-07
  • 利用Python NumPy库及Matplotlib库绘制数学函数图像

    利用Python NumPy库及Matplotlib库绘制数学函数图像

    最近开始学习数学了,有一些题目的函数图像非常有特点,下面这篇文章主要给大家介绍了关于利用Python NumPy库及Matplotlib库绘制数学函数图像的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下
    2022-04-04
  • python实现扫雷游戏

    python实现扫雷游戏

    这篇文章主要为大家详细介绍了python实现扫雷游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-03-03
  • Python使用邻接矩阵实现图及Dijkstra算法问题

    Python使用邻接矩阵实现图及Dijkstra算法问题

    这篇文章主要介绍了Python使用邻接矩阵实现图及Dijkstra算法问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-12-12
  • python辗转相除法求最大公约数和最小公倍数的实现

    python辗转相除法求最大公约数和最小公倍数的实现

    这篇文章主要介绍了python辗转相除法求最大公约数和最小公倍数的实现方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-07-07
  • python中opencv K均值聚类的实现示例

    python中opencv K均值聚类的实现示例

    本文主要介绍了python中opencv K均值聚类的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-06-06
  • Python 二叉树的概念案例详解

    Python 二叉树的概念案例详解

    这篇文章主要介绍了二叉树的概念案例详解,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-09-09
  • Python-jenkins 获取job构建信息方式

    Python-jenkins 获取job构建信息方式

    这篇文章主要介绍了Python-jenkins 获取job构建信息方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-05-05
  • Python+threading模块对单个接口进行并发测试

    Python+threading模块对单个接口进行并发测试

    这篇文章主要为大家详细介绍了Python+threading模块对单个接口进行并发测试,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-06-06

最新评论