Python异常处理总结


Posted in Python onAugust 15, 2014

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

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

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

①.raise 语句

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

# -- coding: utf-8 --

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

# Exception: 抛出一个异常
ThorwErr()

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

import exceptions

# ['ArithmeticError', 'AssertionError'.....]
print dir(exceptions)

传递异常

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

# -- 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类继承(直接或间接)即可:

class SomeCustomException(Exception):
  pass

2. 捕捉异常

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

# -- coding: utf-8 --

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

①.捕捉多个异常

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

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

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

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

②.获取异常信息

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

# -- 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中。

# -- coding: utf-8 --
try:
  print 2/'0'
except (ZeroDivisionError,Exception):
  print '发生了一个异常'
finally:
  print '不管是否发生异常都执行'
Python 相关文章推荐
Python解释执行原理分析
Aug 22 Python
使用Python的Tornado框架实现一个Web端图书展示页面
Jul 11 Python
Python基于xlrd模块操作Excel的方法示例
Jun 21 Python
python一键去抖音视频水印工具
Sep 14 Python
python中时间模块的基本使用教程
May 14 Python
在Django的View中使用asyncio的方法
Jul 12 Python
django框架单表操作之增删改实例分析
Dec 16 Python
Django restframework 框架认证、权限、限流用法示例
Dec 21 Python
使用opencv识别图像红色区域,并输出红色区域中心点坐标
Jun 02 Python
基于Python3读写INI配置文件过程解析
Jul 23 Python
python跨文件使用全局变量的实现
Nov 17 Python
利用Python实现翻译HTML中的文本字符串
Jun 21 Python
python调用Moxa PCOMM Lite通过串口Ymodem协议实现发送文件
Aug 15 #Python
Python3基础之函数用法
Aug 13 #Python
Python3基础之条件与循环控制实例解析
Aug 13 #Python
Python3基础之基本运算符概述
Aug 13 #Python
Python3基础之list列表实例解析
Aug 13 #Python
Python3基础之基本数据类型概述
Aug 13 #Python
Python常用正则表达式符号浅析
Aug 13 #Python
You might like
为什么《星际争霸》是测试人工智能的理想战场
2019/12/03 星际争霸
一个颜色轮换的简单例子
2006/10/09 PHP
PHP几个数学计算的内部函数学习整理
2011/08/06 PHP
php 备份数据库代码(生成word,excel,json,xml,sql)
2013/06/23 PHP
PHP使用imagick读取PDF生成png缩略图的两种方法
2014/03/20 PHP
php中FTP函数ftp_connect、ftp_login与ftp_chmod用法
2014/11/18 PHP
浅析Yii2集成富文本编辑器redactor实例教程
2016/04/25 PHP
PHP实现页面静态化的超简单方法
2016/09/06 PHP
php实现断点续传大文件示例代码
2020/06/19 PHP
jQuery 下拉列表 二级联动插件分享
2012/03/29 Javascript
JS多物体 任意值 链式 缓冲运动
2012/08/10 Javascript
js操作输入框提示信息且响应鼠标事件
2014/03/25 Javascript
js中的json对象详细介绍
2014/10/29 Javascript
javascript中Date对象应用之简易日历实现
2016/07/12 Javascript
JS图片轮播与索引变色功能实例详解
2017/07/06 Javascript
JS实现浏览上传文件的代码
2017/08/23 Javascript
基于ES6 Array.of的用法(实例讲解)
2017/09/05 Javascript
JS异步函数队列功能实例分析
2017/11/28 Javascript
Vue.directive()的用法和实例详解
2018/03/04 Javascript
JS使用正则表达式判断输入框失去焦点事件
2019/10/16 Javascript
Python删除windows垃圾文件的方法
2015/07/14 Python
使用Python实现BT种子和磁力链接的相互转换
2015/11/09 Python
Python面向对象类继承和组合实例分析
2018/05/28 Python
Python如何实现转换URL详解
2019/07/02 Python
Python 下载及安装详细步骤
2019/11/04 Python
Python DataFrame使用drop_duplicates()函数去重(保留重复值,取重复值)
2020/07/20 Python
伊芙丽官方旗舰店:中国淑女一线品牌
2017/12/01 全球购物
SQL Server 2000数据库的文件有哪些,分别进行描述
2013/03/30 面试题
体育专业个人的求职信范文
2013/09/21 职场文书
信息部岗位职责
2013/11/12 职场文书
毕业自我评价范文
2013/11/17 职场文书
初中生自我鉴定
2014/02/04 职场文书
活动策划求职信模板
2014/04/21 职场文书
2016国庆促销广告语
2016/01/28 职场文书
解析原生JS getComputedStyle
2021/05/25 Javascript
js不常见操作运算符总结
2021/11/20 Javascript