python错误和异常(1)
1 SyntaxError: Python解释器语法错误,是唯一不是在运行时发生的异常。
2 检测和处理异常
try语句有两种主要形式:try-except 和 try-finally. 只能二选一。
一个try语句可以对应一个或多个except子句,但只能对应一个finally子句。
try语句块中异常发生点后的剩余语句永远不会到达。
except后面相当于一个处理器,处理异常发生时应该怎么做。
异常或错误的处理流程:当一个异常被引发,剩余代码将会忽略,解释器搜索处理器,如果没有合适的处理器,那么异常就向上移交给调用者去处理,这意味着堆栈框架立即回到之前的那个,如果在上层调用者也没有找到对应的处理器,该异常会继续被向上提交,直到找到合适的处理器,如果到达最顶层仍然没有找到对应处理器,那么就认为这个异常是未处理的,python解释器会显示出跟踪返回消息,然后退出。
try-except语句可以连贯使用,这样可以处理多种异常。
def safe_float(obj):
try:
retval = float(obj)
except ValueError:
retval = 'could not convert non-number to float'
except TypeError:
retval = 'object type cannot be converted to float'
return retval
这样,safe_float()函数就可以分别处理ValueError和TypeError两种异常了。
python2.5以后,对于keyboardInterrupt和SystemExit两个异常(not real error),从Exception里移出,和Exception平级,这样当使用如下的catch_all代码时,就不比为这两个异常创建额外的处理器。
try:
....
except Exception, e:
#handle real errors
异常参数:异常引发后,它会被传递给异常处理器,作为附加帮助信息,一般包含一个指示错误原因的字符串元组。
finally子句:finally子句是无论异常是否发生,是否捕捉都会执行的一段代码。
try:
A
except MyException:
B
else:
C
finally:
D
上面这段代码有两种可能的执行顺序:
- 正常:A-C-D
- 异常:A-B-D
try语句的嵌套:
ccfile = None
try:
tyr:
ccfile = open('cardata.txt', 'r')
txns = ccfile.readlines()
except IOError:
log.write('no txns this month\n')
finally:
if ccfile:
ccfile.close()
这样写的好处是,当readlines调用失败时,异常处理会去继续执行except中的子句,并且在finally子句中会去尝试关闭文件。
一个需要注意的地方是:如果finally中的代码引发了另一个异常或由于return, break, continue语法而终止,原来的异常将会丢失而无法重新引发。
后面会接着讲到 with语句等。
python错误和异常(1)的更多相关文章
- Python错误和异常概念(总)
转载请标明出处: http://www.cnblogs.com/why168888/p/6435956.html 本文出自:[Edwin博客园] Python错误和异常概念(总) 1. 错误和异常的处 ...
- Python - 错误和异常 - 第十九天
Python 错误和异常 作为 Python 初学者,在刚学习 Python 编程时,经常会看到一些报错信息,在前面我们没有提及,这章节我们会专门介绍. Python 有两种错误很容易辨认:语法错误和 ...
- Python错误和异常学习
一:错误解释 1.语法错误:代码不符合解释器或者编译器语法 2.逻辑错误:不完整或者不合法输入或者计算出现问题 代码运行前的语法或者逻辑错误,语法错误在执行前修改,逻辑错误无法修改 二:异常 执行过程 ...
- 13.python错误和异常
一.错误和异常1.程序中的错误分为俩种:(1)语法错误:不按照语言的规则,必须在程序执行前就改正(2)逻辑错误2.异常就是程序运行时发生错误的信号,分为三部分(1)Traceback:异常追踪的信息( ...
- Python错误和异常 学习笔记
错误和异常概念 错误: 1.语法错误:代码不符合解释器或者编译器语法 2.逻辑错误:不完整或者不合法输入或者计算出现问题 异常:执行过程中出现万体导致程序无法执行 1.程序遇到 ...
- Python错误与异常
1 异常和错误 1.1 错误和异常 从软件方面来说,错误是语法或者逻辑上的,语法错误指示软件的结构上有错误,导致不能被解释器解释.当程序的语法正确后,剩下的就是逻辑错误了,逻辑错误可能是由于不完整或者 ...
- Python 错误和异常
1.Python异常类 Python是面向对象语言,所以程序抛出的异常也是类.常见的Python异常有以下几个,大家只要大致扫一眼,有个映像,等到编程的时候,相信大家肯定会不只一次跟他们照面(除非你不 ...
- python错误和异常
一:语法错误syntax errors 熟悉语法! 二:异常 ①打印错误信息时,异常的类型作为异常的内置名显示,并以调用栈的形式显示具体信息 ②常见的异常: ...
- Python 错误和异常小结[转]
原文链接 http://blog.csdn.net/sinchb/article/details/8392827 事先说明哦,这不是一篇关于Python异常的全面介绍的文章,这只是在学习Pyth ...
- Python 错误和异常小结
1.Python异常类 Python是面向对象语言,所以程序抛出的异常也是类.常见的Python异常有以下几个,大家只要大致扫一眼,有个映像,等到编程的时候,相信大家肯定会不只一次跟他们照面(除非你不 ...
随机推荐
- 如何自己编译生成hadoop的eclipse插件,如hadoop-eclipse-plugin-2.6.0.jar
不多说,直接上干货! 如何自己编译生成Eclipse插件,如hadoop-eclipse-plugin-2.6.0.jar 一.相关软件的安装和配置 (一)JDK的安装和配置 Jdk 1.7*安装并配 ...
- jsp tomcat jdk版本对应
jsp使用jdk8时,需要tomcat7以及以上版本,jsp在使用jdk7的时候,tomcat使用tomcat6即可
- InnoDB的分区表
分区功能并不是在存储引擎层完成的,因此不只有InnoDB存储引擎支持分区,常见的存储引擎MyISAM.NDB等都支持.但也并不是所有的存储引擎都支持,如CSV.FEDERATED.MERGE等就不支持 ...
- c++ 沉思录---代理类
一.问题 如何设计一容器能包含彼此不同而又相互关联的类的对象(处于完整的继承层次的类)?因为一般的数组容器都只能包含一种类型的对象. 假设有一个表示不同类型的交通工具的类的派生层次: class Ve ...
- JavaScript自增、自减
JavaScript自增.自减运算符与表达式语法 var i++; var-- 声明变量 i-- 变量名 ++ -- 自增运算符 JavaScript自增.自减运算符与表达式 JavaScript自增 ...
- Golang之并发资源竞争(读写锁)
前面的有篇文章在讲资源竞争的时候,提到了互斥锁.互斥锁的根本就是当一个goroutine访问的时候,其他goroutine都不能访问,这样肯定保证了资源的同步,避免了竞争,不过也降低了性能. 仔细剖析 ...
- .NET中的集合-ArrayList1
集合命名空间: using.System.Collections;(非泛型集合) using.System.Collections.Genneric(泛型集合) 常用的集合 1.“类似数组”集合:Ar ...
- 过滤网址和输入框中的特殊字符,防止sql注入
using System; using System.Data; using System.Configuration; using System.Web; using System.Web.Secu ...
- 撩课-Java每天5道面试题第12天
91.如何提升数据查询的效率? 1.首先检查表的结构是否合理, 因为采用多表查询的时候, 看主外键的引用关系是否适当. 如果不适当则重新设置表结构. 如果是应用中的系统, 则不需要更改表的字段, 只更 ...
- 内嵌Jetty输出debug日志
Slf4jLog logger = new Slf4jLog(); logger.setDebugEnabled(true); Log.setLog(logger); log4j2.xml中配置如下章 ...