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

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

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

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

如果不进行异常处理,即不对错误做出响应,程序的健壮性就会大打折扣,甚至无法保证正常运行,所以必须要进行异常处理。
原文: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

强烈推荐:http://blog.csdn.net/sinchb/article/details/8392827#t1

Python入门笔记(17):错误、异常的更多相关文章

  1. 【python学习笔记】8.异常

    [python学习笔记]8.异常 raise Exception: 抛出指定异常 try/except: 捕捉异常 except: 第一个参数是需要捕获的异常类型,可以是多个类型组成元组,第二个参数是 ...

  2. Python学习笔记七-错误和异常

    程序员总是和各种错误打交道,学习如何识别并正确的处理程序错误是很有必要的. 7.1错误和异常 1.错误 从软件方面来看,错误分为语法错误和逻辑错误两种.这两种错误都将导致程序无法正常进行下去,当Pyt ...

  3. python学习笔记014——错误和异常

    Python有两种错误很容易辨认:语法错误和异常. 1 什么是语法错误 Python 的语法错误或者称之为解析错,是初学者经常碰到的,如下实例 if i>4 print("if语句输出 ...

  4. Python入门基础(10)_异常_1

    最近有点忙,到现在快一个月没写了,罪过罪过,继续学习 异常:python程序在运行时,如果python解释器遇到一个错误,那么程序就会停止执行,并且会提示一些错误信息,这就是异常. 抛出异常:程序停止 ...

  5. Python学习笔记13—错误和异常

    常见的异常:

  6. python学习笔记(七)、异常

    在实际开发中,往往不会出现一个系统编写下来,没有出现任何一个bug.为处理这种会出现错误的地方,如除数为零的除法,python提供了非常强大的机制————异常处理机制. 1 异常 python使用异常 ...

  7. Python入门笔记——(1)数字与表达式

    一.算术运算 整除:// 取余:% 乘方:** (a ** b = pow(a, b)) 十六进制表示:0x...,八进制表示0... round(x [, n]):对x从小数点第n位取四舍五入结果, ...

  8. python学习笔记十:异常

    一.语法 #!/usr/bin/python filename='hello' #try except finally demo try: open('abc.txt') print hello ex ...

  9. [Python]Python入门笔记:语法基础

    Python笔记 一.基本语法 1.1 注释 文档注释: """contents""" 多行注释: ''' contents ''' 单行注 ...

随机推荐

  1. 【转】APP被苹果App Store拒绝的N个原因(持续补充)

    作为iOS开发者,估计有很多都遇到过APP提交到App Store被拒,然后这些被拒的原因多种多样,今天dApps收集了常见的被拒的原因,以便更多开发者了解. 1.程序有重大bug,程序不能启动,或者 ...

  2. Mysql数据备份与恢复

    REM INIT→既に指定したファイルが有った場合, 上書きする REM NORECOVERY→接続先データベースへの既存の接続を閉じる REM REPLACE→既存のデータベースを上書きする set ...

  3. 更新iOS Distribution Certificates

    1. 鑰匙圈存取 -> 憑證輔助程式 -> 從憑證授權要求憑證 email:xxx@xxxx 得到 Blia_20140129.certSigningReques 2.進入開發帳號 憑證 ...

  4. mingw 环境编译 liburl故障一例

    环境是 windows 10,已经安装 mingw,并设置好mingw 和 msys的环境变量 C:\Users\cracker>set |grep MinGW Path=C:\Program ...

  5. Eplan 2D安装版布局,部件、端子竖放

    部件竖放,不是通过变量的选择实现,而是通过设置实现的,具体设置在: 选项-设置-用户-2D安装板布局: 部件方向-更改为 垂直 部件放置-旋转角度-更改为90° 这样在连续放置部件的时候就变为竖放了, ...

  6. PSAM卡与CPU(用户卡)的操作过程

    最近我一直在研究关于通过国密PSAM卡作为安全模块来读写cpu(用户卡)的问题 其实,两者都是卡片,或者说都是从设备.它们之间是无法相互访问的. 实际上,PSAM 卡是作为秘密密钥的载体,专门执行加密 ...

  7. 在自己的框架中引用 PHPExcel

    如果直接在框架中的controller中直接引用 xxxx/PHPExcel.php,由于框架中有autoload 与PHPExcel的autoload冲突(加载目录原因), 那么在不想做太多修改的情 ...

  8. php添加数据到xml文件的例子

    php添加数据到xml文件中 时间:2015-12-17 06:30:37来源:网络 导读:php添加数据到xml文件中   xml文件:stu.xml: 复制代码代码如下: <?xml ver ...

  9. Using HiveServer2 - Authentication

    To configure Hive for use with HiveServer2, include the following configuration properties in the .. ...

  10. 深入研究 蒋金楠(Artech)老师的 MiniMvc(迷你 MVC),看看 MVC 内部到底是如何运行的

    前言 跟我一起顺藤摸瓜剖析 Artech 老师的 MiniMVC 是如何运行的,了解它,我们就大体了解 ASP.NET MVC 是如何运行的了.既然是“顺藤摸瓜”,那我们就按照 ASP.NET 的执行 ...