什么是异常

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. 集合中Set接口与Collection接口,常用子类TreeSet,HashSet.

    Set接口与List接口的不同之处在于: 不允许有重复的数据. 定义如下: public interface Set<E>extends Collection<E> 主要方法与 ...

  2. BZOJ 1304: [CQOI2009]叶子的染色

    1304: [CQOI2009]叶子的染色 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 566  Solved: 358[Submit][Statu ...

  3. BZOJ 1854 【Scoi2010】 游戏

    Description lxhgww最近迷上了一款游戏,在游戏里,他拥有很多的装备,每种装备都有2个属性,这些属性的值用[1,10000]之间的数表示.当他使用某种装备时,他只能使用该装备的某一个属性 ...

  4. SQL 2014新特性- Delayed durability

    ACID 是数据库的基本属性.其中的D是指"持久性":只要事务已经提交,对应的数据修改就会被保存下来,即使出现断电等情况,当系统重启后之前已经提交的数据依然能够反映到数据库中. 那 ...

  5. node基础05:路由基础

    1.基础实例 //server.js var http = require("http"); var url = require("url"); var rou ...

  6. intellij idea 高级用法之:集成JIRA、UML类图插件、集成SSH、集成FTP、Database管理

    之前写过一篇IntelliJ IDEA 13试用手记,idea还有很多高大上的功能,易用性几乎能与vs.net媲美,反正我自从改用idea后,再也没开过eclipse,今天来看几个高级功能: 一.与J ...

  7. FastFourierTransform (FFT)

    FastFourierTransform.h #pragma once #include <stdio.h> #include <math.h> #ifndef INCLUDE ...

  8. Java中primitive type的线程安全性

    Java中primite type,如char,integer,bool之类的,它们的读写操作都是atomic的,但是有几个例外: long和double类型不是atomic的,因为long和doub ...

  9. svn: Checksum mismatch for 'C:\Documents and Settings\Admin\workspace\pics5\src\baolintest\.svn\text-base\test1.java.svn-base'; expected: '034cc715af5

    出现这个问题解决如下: 比如问题文件为\workspace\pics5\src\baolintest\test.java文件,则 1.把在工程根\workspace\pics5\src\baolint ...

  10. O2O营销模式(Online To Offline)

    什么是O2O营销模式 O2O营销模式又称离线商务模式,是指线上营销线上购买带动线下经营和线下消费.O2O通过打折.提供信息.服务预订等方式,把线下商店的消息推送给互联网用户,从而将他们转换为自己的线下 ...