Python入门笔记(17):错误、异常
一、什么是错误,什么是异常,它们两者区别
这里解释如下:个人觉得很通俗易懂
错误是指在执行代码过程中发生的事件,它中断或干扰代码的正常流程并创建异常对象。当错误中断流程时,该程序将尝试寻找异常处理程序(一段告诉程序如何对错误做出响应的代码),以帮助程序恢复流程。换句话说,错误是一个事件,而异常是该事件创建的对象。
当使用短语“产生异常”时,表示存在问题的方法发生错误,并创建异常对象(包含该错误的信息及发生的时间和位置)来响应该错误。导致出现错误和随后异常的因素包括用户错误、资源失败和编程逻辑失败。这些错误与代码实现特定任务的方法有关,而与该任务的目的无关。
如果不进行异常处理,即不对错误做出响应,程序的健壮性就会大打折扣,甚至无法保证正常运行,所以必须要进行异常处理。
原文: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):错误、异常的更多相关文章
- 【python学习笔记】8.异常
[python学习笔记]8.异常 raise Exception: 抛出指定异常 try/except: 捕捉异常 except: 第一个参数是需要捕获的异常类型,可以是多个类型组成元组,第二个参数是 ...
- Python学习笔记七-错误和异常
程序员总是和各种错误打交道,学习如何识别并正确的处理程序错误是很有必要的. 7.1错误和异常 1.错误 从软件方面来看,错误分为语法错误和逻辑错误两种.这两种错误都将导致程序无法正常进行下去,当Pyt ...
- python学习笔记014——错误和异常
Python有两种错误很容易辨认:语法错误和异常. 1 什么是语法错误 Python 的语法错误或者称之为解析错,是初学者经常碰到的,如下实例 if i>4 print("if语句输出 ...
- Python入门基础(10)_异常_1
最近有点忙,到现在快一个月没写了,罪过罪过,继续学习 异常:python程序在运行时,如果python解释器遇到一个错误,那么程序就会停止执行,并且会提示一些错误信息,这就是异常. 抛出异常:程序停止 ...
- Python学习笔记13—错误和异常
常见的异常:
- python学习笔记(七)、异常
在实际开发中,往往不会出现一个系统编写下来,没有出现任何一个bug.为处理这种会出现错误的地方,如除数为零的除法,python提供了非常强大的机制————异常处理机制. 1 异常 python使用异常 ...
- Python入门笔记——(1)数字与表达式
一.算术运算 整除:// 取余:% 乘方:** (a ** b = pow(a, b)) 十六进制表示:0x...,八进制表示0... round(x [, n]):对x从小数点第n位取四舍五入结果, ...
- python学习笔记十:异常
一.语法 #!/usr/bin/python filename='hello' #try except finally demo try: open('abc.txt') print hello ex ...
- [Python]Python入门笔记:语法基础
Python笔记 一.基本语法 1.1 注释 文档注释: """contents""" 多行注释: ''' contents ''' 单行注 ...
随机推荐
- linux 文件夹说明,用户添加删除,不熟悉的命令
一.Linux 根目录下的文件夹说明 usr 程序默认安装路径,相当于windows的 program 附显示当前所处位置:pwd 二.用户 用户添加:useradd 用户名 passwd 用户名 u ...
- 用户管理 之 在Linux系统中,批量添加用户的操作流程
一.阅读此文件您需要掌握的基础知识: <Linux 用户(user)和用户组(group)管理概述><用户(user)和用户组(group)配置文件详解><Linux 用 ...
- 自定义 scrapy 爬虫的 requests
之前使用 scrapy 抓取数据的时候 ,默认是在逻辑中判断是否执行下一次请求 def parse(self): # 获取所有的url,例如获取到urls中 for url in urls: yiel ...
- SAP GUI SAPLOGON.INI
GUI是SAP系统最常用的客户端,在一台客户机上,利用GUI可以连接多套SAP系统(连接方法参见<客户端连接配置(SAP GUI 710)>),也可以设置多个快捷方式登录(参见<用快 ...
- Linux监控工具 (Linux Monitor Tools)
最近发现几个好用的工具,顺便总结下. Zabbix和Nagios属于重量级,企业级Service procps-ng: top, free, ps, pgrep, vmstat ... sysstat ...
- Android Studio 简单功能介绍
Android Studio 建立系统工具包你用来生成,测试,运行您的应用程序和软件包.构建系统是独立于Android的工作室,所以你可以调用它的Android的工作室或从命令行.在你写你的应用程序 ...
- POJ 2082 Terrible Sets
Terrible Sets Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 2747 Accepted: 1389 Des ...
- 使用SharePoint Designer定制开发员工工作日志系统实例!
昨天已介绍了一篇<使用SharePoint Designer定制开发专家库系统实例!>,今天继续来介绍使用SharePoint Designer定制开发员工工作日志系统实例,主要功能包括填 ...
- 全中国的省市县镇乡村数据获取以及展示java源代码
第一步.准备工作(数据源+工具): 数据源(截止目前最全面权威的官方数据):http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2013/ 爬取数据的工具 ...
- HTTP 详解一 -- 转
HTTP是一个属于应用层的面向对象的协议,由于其简捷.快速的方式,适用于分布式超媒体信息系统.它于1990年提出,经过几年的使用与发展,得到不断地完善和扩展.目前在WWW中使用的是HTTP/1.0的第 ...