Python异常处理总结

这篇文章主要介绍了Python异常处理总结,需要的朋友可以参考下

本文较为详细的罗列了Python常见的异常处理,供大家参考,具体如下:

1. 抛出异常和自定义异常

Python用异常对象(exception object)表示异常情况,遇到错误后,会引发异常。如果异常对象并未被处理或捕捉,程序就会用所谓的回溯(Traceback,一种错误信息)终止执行。

①.raise 语句

Python中的raise 关键字用于引发一个异常,基本上和C#和Java中的throw关键字相同,如下所示:

?
1
2
3
4
5
6
7
# -- coding: utf-8 --
  
def ThorwErr():
  raise Exception("抛出一个异常")
  
# Exception: 抛出一个异常
ThorwErr()

raise关键字后面是抛出是一个通用的异常类型(Exception),一般来说抛出的异常越详细越好,Python在exceptions模块内建了很多的异常类型,通过使用dir函数来查看exceptions中的异常类型,如下:

?
1
2
3
4
import exceptions
  
# ['ArithmeticError', 'AssertionError'.....]
print dir(exceptions)

传递异常

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

?
1
2
3
4
5
6
7
8
9
10
11
# -- coding: utf-8 --
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

②.自定义异常类型

Python中也可以自定义自己的特殊类型的异常,只需要要从Exception类继承(直接或间接)即可:

?
1
2
class SomeCustomException(Exception):
  pass

2. 捕捉异常

和C#中的try/catch类似,Python中使用try/except关键字来捕捉异常,如下:

?
1
2
3
4
5
6
# -- coding: utf-8 --
  
try:
  print 2/0
except ZeroDivisionError:
  print '除数不能为0'

①.捕捉多个异常

在一个except语句只捕捉其后声明的异常类型,如果可能会抛出的是其他类型的异常就需要再增加一个except语句了,或者也可以指定一个更通用的异常类型比如:Exception,如下:

?
1
2
3
4
5
6
7
# -- coding: utf-8 --
try:
  print 2/'0'
except ZeroDivisionError:
  print '除数不能为0'
except Exception:
  print '其他类型异常'

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

?
1
2
3
4
5
# -- coding: utf-8 --
try:
  print 2/'0'
except (ZeroDivisionError,Exception):
  print '发生了一个异常'

②.获取异常信息

每个异常都会有一些异常信息,一般情况下我们应该把这些异常信息记录下来:

?
1
2
3
4
5
6
# -- coding: utf-8 --
try:
  print 2/'0'
except (ZeroDivisionError,Exception) as e:
  # unsupported operand type(s) for /: 'int' and 'str'
  print e

3. finally子句

finally子句和try子句联合使用但是和except语句不同,finally不管try子句内部是否有异常发生,都会执行finally子句内的代码。所有一般情况下,finally自己常常用于关闭文件或者在Socket中。

?
1
2
3
4
5
6
7
# -- coding: utf-8 --
try:
  print 2/'0'
except (ZeroDivisionError,Exception):
  print '发生了一个异常'
finally:
  print '不管是否发生异常都执行'

Python异常处理总结相关推荐

  1. python示例异常处理与程序调试_笔记:Python异常处理与程序调试

    Python异常处理与程序调试 Python提供了强大的异常处理机制,通过捕获异常可以提高程序的健壮性.异常处理还具有释放对象,中止循环的运行等作用.在程序运行的过程中,如果发生了错误,可以返回事先约 ...

  2. Python 异常处理--raise函数用法

    Python 异常处理--raise函数用法 参考文章: (1)Python 异常处理--raise函数用法 (2)https://www.cnblogs.com/darkgui34/p/405074 ...

  3. python异常处理--try except else raise finally

    python异常处理--try except else raise finally 参考文章: (1)python异常处理--try except else raise finally (2)http ...

  4. python 异常处理 try except

    python 异常处理 try except 参考文章: (1)python 异常处理 try except (2)https://www.cnblogs.com/brave1/p/10252739. ...

  5. python异常处理(基础)

    python异常处理(基础) 参考文章: (1)python异常处理(基础) (2)https://www.cnblogs.com/fnng/p/3518202.html 备忘一下.

  6. python处理流程-Python异常处理大全(二)

    原标题:Python异常处理大全(二) 本文是Python异常处理教程的第二部分,上部分我们简单的介绍了几种异常,及其处理办法,这部分我们将更详细地对Python中产生的异常处理方法进行探讨. 函数使 ...

  7. 十一、Python异常处理

    Python异常处理 异常抛出机制,为程序开发人员提供了一种在运行时发现错误,进行回复处理,然后继续执行的能力 #!/usr/bin/python try: open('abc.txt') excep ...

  8. Python异常处理体系简介(1)

    http://developer.51cto.com/art/200902/111535.htm Python异常处理体系 1.Python内建异常体系结构 The class hierarchy f ...

  9. python异常处理_汇总三大python异常处理、自定义异常、断言原理与用法分析

    本文实例讲述了python异常处理.自定义异常.断言原理与用法.分享给大家供大家参考,具体如下: 什么是异常: 当程序遭遇某些非正常问题的时候就会抛出异常:比如int()只能处理能转化成int的对象, ...

  10. 【Python】1054 求平均值(Python异常处理练习)

    1. 题目 2. 代码 重坑,读题不仔细,导致耗时多. 题目中合法数字当只用一个的时候,输出的结果中的是number,而不是numbers # https://pintia.cn/problem-se ...

最新文章

  1. SecureCRT从Windows中上传文件lrzsz工具
  2. uml 时序图_设计模式:UML是怎么回事?设计原则?
  3. 创纪录!Oracle关键补丁更新修复关键漏洞曝光
  4. Java文件字节流和字符流FileInputStream,FileOutputStream,FileReader,FileWriter
  5. 数据结构-----红黑树的插入操作
  6. C# NameValueCollection集合 (转)
  7. Java技术:为什么不推荐使用BeanUtils属性转换工具
  8. 查看linux服务器的系统信息
  9. vs2017编译QT with ssl
  10. 如何对linux文件进行编译,linux编译和执行命令都有哪些?该如何实现?
  11. 阿里新一代分布式任务调度平台Schedulerx2.0破土而出
  12. pyspider all 只启动了_我是如何让微博绿洲的启动速度提升30%的(二)
  13. 六度分离 HDU - 1869 (最短路径)
  14. Linux服务器的软件安装步骤
  15. 49 张图详解 WiFi 的 26 个知识点
  16. Opencv实战四 图像匹配
  17. Windows10使用diskpart分区
  18. Python OpenCv 实现实时人脸识别及面部距离测量
  19. android 屏蔽电源键,home键
  20. XML常见的两种解析方式总结

热门文章

  1. gcc下strstream使用时报错
  2. 现代软件工程讲义 如何提出靠谱的项目建议
  3. Samba简单应用案例
  4. php网站用框架与不用的区别,做前端网页是不是必须要用网页框架
  5. android基础入门生命周期(1)
  6. Notification使用详解之一:基础应用
  7. 催化剂概念在管理领域的应用——来自项目管理群的讨论
  8. 关于WideCharToMultiByte来解码UTF8
  9. 2014.10.1 Form中显示pdf文件
  10. android学习--TabHost选项卡组件