什么是异常

Python用异常对象(exception object)来表示异常情况。遇到错误会引发异常,如果异常对象未被处理或者捕捉,程序就会用回溯(traceback)终止执行。

Raise语句:

异常可以在某些东西出错时自动引发。为了引发异常有两种方式:

.使用一个类,应该是Excepion的子类(使用类时,程序会自动创建类的一个实例)
.实例参数调用raise语句。

实例(使用内建Exception异常类):

In []: raise Exception
---------------------------------------------------------------------------
Exception Traceback (most recent call last)
<ipython-input--fca2ab0ca76b> in <module>()
----> raise Exception Exception:
#raise Exception 引发一个没有任何有关错误信息的普通异常。
In []: raise Exception('The Hyperdrive overload')
---------------------------------------------------------------------------
Exception Traceback (most recent call last)
<ipython-input--3d981203beac> in <module>()
----> raise Exception('The Hyperdrive overload') Exception: The Hyperdrive overload
#添加了错误信息

内建异常类:

内建异常类很多,都在exceptions模块中。官网手册(3.5.1版本),在3.5.1+中,被集成在内置模块中。

id 类名 描述
1 raise Exception 所有异常的基类
2 raise AttributeError 特征引用或者赋值失败时引发的
3 raise IOError 试图打在不存在的文件(包括其他情况)
4 raise IndexError 使用序列中不存在的索引
5 raise KeyError 使用映射中不存在的键
6 raise NameError 找不到名字(变量)
7 raise SyntaxError 在代码为错误形式时引发
8 raise TypeError 在内建操作或者函数应用与错误类型的对象时
9 raise ValueError 正确的类型对象,但是对象使用不合适的值
10 raise ZeroDivisionError 除法,第二参数为0

自定义异常类:

确保从Exception类继承,直接或者间接都可以(可以是其他内建异常类的子类),编写一个自定义异常类如下:

#!/usr/bin/env python
# encoding: utf-8
"""
@author: kamil.liu @file: exception.py
@time: 16-5-30 上午10:56
"""
# raise Exception
# raise AttributeError
# raise IOError
# raise IndexError
# raise KeyError
# raise NameError
# raise SyntaxError
# raise TypeError
# raise ValueError
# raise ZeroDivisionError
class kamilException(Exception):
pass
print(type(kamilException))
print(dir(kamilException))

结果:

/usr/bin/python3.5 /home/kamil/PycharmProjects/untitled/test1/exception.py
<class 'type'>
['__cause__', '__class__', '__context__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__setstate__', '__sizeof__', '__str__', '__subclasshook__', '__suppress_context__', '__traceback__', '__weakref__', 'args', 'with_traceback'] Process finished with exit code 0

python2 python3 处理异常的区别:

1.所以异常都从 BaseException继承,并删除了StardardError
2.去除了异常类的序列行为和.message属性
3.用 raise Exception(args)代替 raise Exception, args语法
4.捕获异常的语法改变,引入了as关键字来标识异常实例,在Py2中:
>>> try:
... raise NotImplementedError('Error')
... except NotImplementedError, error: ... print error.message
...
Error
在Py3中:
>>> try:
raise NotImplementedError('Error')
except NotImplementedError as error: #注意这个 as
print(str(error))
Error
5.异常链,因为__context__在3.0a1版本中没有实现

python3 异常处理的更多相关文章

  1. python3异常处理 try

    一. 简介 在编程过程中为了增加友好性,在程序出现Bug时一般不会直接将错误信息展示给用户,而是提供一个友好的输出提示. 二. 使用 1.异常基础 常用结构: try: pass except Exc ...

  2. Python3异常处理

    一. 简介 在编程过程中为了增加友好性,在程序出现Bug时一般不会直接将错误信息展示给用户,而是提供一个友好的输出提示. 二. 使用 1. 异常基础 常用结构: try: pass except Ex ...

  3. win10上使用php与python实现与arduino串口通信

    注意: php 需要php7,安装及开启php_dio.dll com口按照实际的进行设置,如果不知道可以打开arduino编辑器进行查看 可以与用户实现命令行交互,但是效率过慢,不清楚如何优化,使用 ...

  4. Python3中urllib详细使用方法(header,代理,超时,认证,异常处理)

    urllib是python的一个获取url(Uniform Resource Locators,统一资源定址器)了,我们可以利用它来抓取远程的数据进行保存哦,下面整理了一些关于urllib使用中的一些 ...

  5. 【Python3之异常处理】

    一.错误和异常 1.错误 代码运行前的语法或者逻辑错误 语法错误(这种错误,根本过不了python解释器的语法检测,必须在程序执行前就改正) def test: ^ SyntaxError: inva ...

  6. Python3中urllib详细使用方法(header,代理,超时,认证,异常处理) 转

    urllib是python的一个获取url(Uniform Resource Locators,统一资源定址器)了,我们可以利用它来抓取远程的数据进行保存哦,下面整理了一些关于urllib使用中的一些 ...

  7. 【转】Python3中urllib详细使用方法(header,代理,超时,认证,异常处理)

      urllib是python的一个获取url(Uniform Resource Locators,统一资源定址器)了,我们可以利用它来抓取远程的数据进行保存哦,下面整理了一些关于urllib使用中的 ...

  8. python3.4学习笔记(二) 类型判断,异常处理,终止程序

    python3.4学习笔记(二) 类型判断,异常处理,终止程序,实例代码: #idle中按F5可以运行代码 #引入外部模块 import xxx #random模块,randint(开始数,结束数) ...

  9. Python3基础(6)面向对象编程、异常处理

    ---------------个人学习笔记--------------- ----------------本文作者吴疆-------------- ------点击此处链接至博客园原文------ 1 ...

随机推荐

  1. HTML-学习笔记(文本格式化,引用,计算机代码)

    HTML 可定义很多供格式化输出的元素,比如粗体和斜体字. <b>定义粗体字体 <p>这是一段<b>粗体字体</b>通过标签定义</p> & ...

  2. Nginx中防盗链(下载防盗链和图片防盗链)操作记录

    日常运维工作中,设置防盗链的需求会经常碰到,这也是优化网站的一个必要措施.今天在此介绍Nginx中设置下载防盗链和图片防盗链的操作~ 一.Nginx中下载防盗链的操作记录对于一些站点上的下载操作,有很 ...

  3. 使用Jquery向一个空白网页动态创建一个iframe,及嵌入页面,和向嵌入页面传参

    [csharp] view plaincopyprint?using Microsoft.VisualBasic; using System; using System.Collections; us ...

  4. DEDECMS之二 如何修改模板页

    使用织梦系统最经常是为了仿站,那么模板应该怎么改? 这里主要谈谈关于比较常用的几个模板页 网站主页.列表页.内容页.栏目的调用 1.主页模板 常用组合方法:index.htm + head.htm + ...

  5. CSS IE6/7/8, Firefox, Safari, Chrome, Opera Hack使用简要归纳(转)

    网上有很多关于IE6/7/8, Firefox, Safari, Chrome, Opera CSS Hack的文章,但我觉得太过繁杂,要不给出一张看也看不懂的CSS Hack归纳表,要不就是给出一大 ...

  6. android错误之MediaPlayer用法的Media Player called in state *,androidmediaplayer

    用到Media Player,遇到几个问题,记一下 用法就不说了,使用的时候最好参考一下mediaPlayer的这张图 第一个错误是Media Player called in state 8 这个是 ...

  7. ZooKeeper 笔记(3) 实战应用之【统一配置管理】

    大型应用通常会按业务拆分成一个个业务子系统,这些大大小小的子应用,往往会使用一些公用的资源,比如:需要文件上传.下载时,各子应用都会访问公用的Ftp服务器.如果把Ftp Server的连接IP.端口号 ...

  8. Web性能优化-合并js与css,减少请求

    Web性能优化已经是老生常谈的话题了, 不过笔者也一直没放在心上,主要的原因还是项目的用户量以及页面中的js,css文件就那几个,感觉没什么优化的.人总要进步的嘛,最近在被angularjs吸引着,也 ...

  9. 深入grootJs(进阶教程)

    深入grootJs 这篇教程的原则是把grootJs原理讲透,主要真正理解了原理才能用起来随心所欲 mvvm模式简介 grootJs的vm结构 扫描函数sweep 垃圾回收的原理 加载器中的预编 ,控 ...

  10. The Lifecycle and Cascade of WeChat Social Messaging Groups-www2016-20160512

    分析性论文: 分析并预测微信群的生命周期,以及群成员的邀请模式. 参考资料:http://www.360doc.com/content/16/0423/11/26166517_553076725.sh ...