如何在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中进行异常处理内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 基于循环神经网络(RNN)的古诗生成器

    基于循环神经网络(RNN)的古诗生成器

    这篇文章主要为大家详细介绍了基于循环神经网络(RNN)的古诗生成器,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-03-03
  • python使用numpy寻找二维数组的最值及其下标方法分析

    python使用numpy寻找二维数组的最值及其下标方法分析

    这篇文章主要为大家介绍了python使用numpy寻找二维数组的最值及其下标实现方法详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-08-08
  • python 包实现JSON 轻量数据操作

    python 包实现JSON 轻量数据操作

    这篇文章主要介绍了python 包实现JSON 轻量数据操作,文章介绍内容首先将对象转为json字符串展开主题详细内容需要的小伙伴可以参考一下
    2022-04-04
  • python 搭建简单的http server,可直接post文件的实例

    python 搭建简单的http server,可直接post文件的实例

    今天小编就为大家分享一篇python 搭建简单的http server,可直接post文件的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-01-01
  • python单元测试框架pytest介绍

    python单元测试框架pytest介绍

    这篇文章介绍了python的单元测试框架pytest,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-06-06
  • python实现贪吃蛇双人大战

    python实现贪吃蛇双人大战

    这篇文章主要为大家详细介绍了python实现贪吃蛇双人大战,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-04-04
  • 利用Python实现Excel的文件间的数据匹配功能

    利用Python实现Excel的文件间的数据匹配功能

    这篇文章主要介绍了利用Python实现Excel的文件间的数据匹配,本文通过一个函数实现此功能,通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-06-06
  • 详谈python中冒号与逗号的区别

    详谈python中冒号与逗号的区别

    下面小编就为大家分享一篇详谈python中冒号与逗号的区别,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-04-04
  • Pandas实现列(column)排序的几种方法

    Pandas实现列(column)排序的几种方法

    Pandas是一种高效的数据处理库,在数据处理过程中,咱们经常需要将列按照一定的要求进行排序,本文就来介绍一下Pandas实现列(column)排序的几种方法,感兴趣的可以了解一下
    2023-11-11
  • python 监控服务器是否有人远程登录(详细思路+代码)

    python 监控服务器是否有人远程登录(详细思路+代码)

    这篇文章主要介绍了python 监控服务器是否有人远程登录的方法,帮助大家利用python 监控服务器,感兴趣的朋友可以了解下
    2020-12-12

最新评论