自 http://www.cnblogs.com/BeginMan/p/3171445.html

一、什么是错误,什么是异常,它们两者区别

这里解释如下:个人觉得很通俗易懂

错误是指在执行代码过程中发生的事件,它中断或干扰代码的正常流程并创建异常对象。当错误中断流程时,该程序将尝试寻找异常处理程序(一段告诉程序如何对错误做出响应的代码),以帮助程序恢复流程。换句话说,错误是一个事件,而异常是该事件创建的对象。

当使用短语“产生异常”时,表示存在问题的方法发生错误,并创建异常对象(包含该错误的信息及发生的时间和位置)来响应该错误。导致出现错误和随后异常的因素包括用户错误、资源失败和编程逻辑失败。这些错误与代码实现特定任务的方法有关,而与该任务的目的无关。

如果不进行异常处理,即不对错误做出响应,程序的健壮性就会大打折扣,甚至无法保证正常运行,所以必须要进行异常处理。
原文:http://blog.163.com/zhaojinyong2@126/blog/static/279729562008719384580/

Python的异常处理能力是很强大的,可向用户准确反馈出错信息。在Python中,异常也是对象,可对它进行操作。所有异常都是基类 Exception的成员。所有异常都从基类Exception继承,而且都在exceptions模块中定义。Python自动将所有异常名称放在内建 命名空间中,所以程序不必导入exceptions模块即可使用异常。一旦引发而且没有捕捉SystemExit异常,程序执行就会终止。如果交互式会话 遇到一个未被捕捉的SystemExit异常,会话就会终止。
Python采用的是”尝试(try)块“、和”捕获(catch)块“。

二、Python中的异常

1、NameError:尝试访问一个未声明的变量

>>>foo
Traceback (most recent call last):
File "<pyshell#0>", line 1, in <module>
foo
NameError: name 'foo' is not defined

如果请求的名字没有在任何名称空间里找到,则产生一个NameError异常。

2、ZeroDivisionError:除数为0

>>> 1/0

Traceback (most recent call last):
File "<pyshell#2>", line 1, in <module>
1/0
ZeroDivisionError: integer division or modulo by zero

3、SyntaxError:Python解释器语法错误

>>> for
SyntaxError: invalid syntax
>>>

SyntaxError异常是唯一一个不是在程序执行时发生的异常,代表一个不正常的结构,一般在编译时发生。

注意:Python是解释型非编译型,这里说的编译是字节编译。

4、IndexError:超出索引( out of range)

>>> lis = []
>>> lis[0] Traceback (most recent call last):
File "<pyshell#5>", line 1, in <module>
lis[0]
IndexError: list index out of range

5、KeyError:请求一个不存在的字典关键字

>>> dic = {'name':'BeginMan'}
>>> dic['name']
'BeginMan'
>>> dic['age'] Traceback (most recent call last):
File "<pyshell#8>", line 1, in <module>
dic['age']
KeyError: 'age'
>>>

6、IOError:输入输出错误

>>> f = open('s.txt','r')

Traceback (most recent call last):
File "<pyshell#12>", line 1, in <module>
f = open('s.txt','r')
IOError: [Errno 2] No such file or directory: 's.txt'

7、AttributeError:尝试访问未知的属性

>>> class myClass(object):
pass >>> myIn = myClass()
>>> myIn.bar Traceback (most recent call last):
File "<pyshell#17>", line 1, in <module>
myIn.bar
AttributeError: 'myClass' object has no attribute 'bar'
>>>

 8、ValueError:传给函数的参数类型不正确,比如给int()函数传入字符串形

三、异常处理

try-except/try-finally只選其一,可以一个try多个except;但只能一个try,一个finally
try-except-finally组合

try:
s = 1/0
#except Exception,e:
except ZeroDivisionError, e:
print 'Error:%s' %e
finally:
print 'ok'

断言assert:

try:
assert 1 == 2,'1 is not equal 2'
except Exception,e:
print '%s:%s' %(e.__class__.__name__,e)
#输出:AssertionError:1 is not equal 2

注意:
如果上面的with代码块没有使用from __future__ import with_statement, 代码将会报错, 提示你这个功能在2.6中实现.
Warning: 'with' will become a reserved keyword in Python 2.6

python 17 异常的更多相关文章

  1. Python标准异常topic

    Python标准异常topic AssertionError                            断言语句 (assert)                              ...

  2. Python 6 —— 异常

    Python 6 —— 异常 异常分类 AttributeError:调用不存在的方法 EOFError:遇到文件末尾引发异常 ImportError:导入模块引发异常 IndexError:列表越界 ...

  3. python 的异常及其处理

    Python 异常处理 python提供了两个非常重要的功能来处理python程序在运行中出现的异常和错误.你可以使用该功能来调试python程序. 异常处理: 本站Python教程会具体介绍. 断言 ...

  4. Python中异常(Exception)的总结

    Python中的异常处理 异常处理的语句结构 try: <statements> #运行try语句块,并试图捕获异常 except <name1>: <statement ...

  5. Python标准异常总结

    Python标准异常总结 AssertionError 断言语句(assert)失败 AttributeError 尝试访问未知的对象属性  EOFError 用户输入文件末尾标志EOF(Ctrl+d ...

  6. 19 Python标准异常总结 (转)

    Python标准异常总结 AssertionError 断言语句(assert)失败 AttributeError 尝试访问未知的对象属性 EOFError 用户输入文件末尾标志EOF(Ctrl+d) ...

  7. Python标准异常和异常处理详解

    python提供了两个非常重要的功能来处理python程序在运行中出现的异常和错误.你可以使用该功能来调试python程序. 1.异常处理: 本站Python教程会具体介绍. 2.断言(Asserti ...

  8. python基础-异常(exception)处理

    python基础-异常(exception)处理 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 程序中难免出现错误,而错误分成两种,即语法错误和逻辑错误.语法错误根本过不了pyth ...

  9. python——标准异常总结

    请参考此网站: Python 标准异常总结 https://fishc.com.cn/forum.php?mod=viewthread&tid=45814&extra=page%3D1 ...

随机推荐

  1. [bzoj2510]弱题 (循环矩阵优化dp)

    Description 有M个球,一开始每个球均有一个初始标号,标号范围为1-N且为整数,标号为i的球有ai个,并保证Σai = M. 每次操作等概率取出一个球(即取出每个球的概率均为1/M),若这个 ...

  2. wmic命令用法小例

    wmic就是wmic.exe,位于windows目录底下,是一个命令行程序.WMIC可以以两种模式执行:交互模式(Interactive mode)和非交互模式(Non-Interactive mod ...

  3. 6-23 EDM的报告

    EDM营销(Email Direct Marketing)也即:Email营销. 目的:数据分析.制定一对一的个性化数据.提高用户访问率.EDM是一对一的沟通,让你的用户感觉到尊重, 方式:选择强有力 ...

  4. 数据可视化(Echart) :柱状图、折线图、饼图等六种基本图表的特点及适用场合

    数据可视化(Echart) 柱状图.折线图.饼图等六种基本图表的特点及适用场合 参考网址 效果图 源码 <!DOCTYPE html> <html> <head> ...

  5. 谈谈-Android Studio 调试功能

    先编译好要调试的程序. 1.设置断点 选定要设置断点的代码行,在行号的区域后面单击鼠标左键即可. 2.开启调试会话 点击红色箭头指向的小虫子,开始进入调试. IDE下方出现Debug视图,红色的箭头指 ...

  6. msf反弹shell

    今天回顾了一下msf反弹shell的操作,在这里做一下记录和分享.( ̄︶ ̄)↗ 反弹shell的两种方法 第一种Msfvenom实例: 1.msfconsole #启动msf 2.msfvenom - ...

  7. Spring 学习笔记 Resource 资源

    Spring Resources 概述 在日常程序开发中,处理外部资源是很繁琐的事情,我们可能需要处理 URL 资源.File 资源.ClassPath相关资源等等.并且在 java 中 Java . ...

  8. Java通道

    通道(Channel)是数据源和Java程序之间的开放连接,用于执行I/O操作.Channel接口在java.nio.channels包中.通道(Channel)接口只声明了两个方法:close()和 ...

  9. OpenFileDialog 打开图片存储到电脑本地上

    替换图片 private void btnSkin_Click(object sender, RoutedEventArgs e) { string fName; OpenFileDialog ofd ...

  10. Chrome调试小技巧

    前言: 除了我们日常使用的调试方法,在Chrome中,其含有一些有意思的方法,有助于提高我们的开发调试效率. Sources页 command + p 文件跳转 使用Sublime的人或习惯用comm ...