python异常处理
2015-09-18 16:02
495 查看
异常捕捉形式
捕捉异常可以使用try/except语句。通常有以下形式:1 try ……..except
except 不带任何异常(捕获所有异常)
try: sentence except: do something
except 带参数异常
try: sentence except Exception, Argument : do something
except带多种异常类型
try: sentence except (Exception1[, Exception2[,...ExceptionN]]]): do something
2 try … …else
意义:表示try中程序执行出错后,执行else中的程序
try: sentence else : do something
或者在1 中的 try-except中添加 else,表示try执行异常后,如果这个异常被except捕捉到,则执行except中的程序,异常不在except异常列表中,则执行 else中的程序。
3 try-finally
表示无论try中程序是否产生异常,finally中的程序在try(或者是finally前面的程序)执行完后,才开始执行,并且一定会执行。
try: sentence finally: do something
当然,finally 可以和 try-except,else等结合执行。finally中的程序一定会执行。
此异常处理的一特点是,finally中程序一定执行。在某些需要最后执行一定操作的程序,例如 关闭打开的文件,关闭数据库连接,可以使用此结构。
#!/usr/bin/python try: fh = open("testfile", "w") try: fh.write("This is my test file for exception handling!!") finally: print "Going to close the file" fh.close() except IOError: print "Error: can\'t find file or read data"
手动触发异常
使用raise语句触发异常,执行raise语句时,Python会创建指定的异常类的一个对象Exception 。raise语句还可指定对异常对象进行初始化的参数args 。定义形式:
raise [Exception [, args [, traceback]]]
traceback是异常追踪
Exception 是异常的类型
args 异常参数值
例如
def function(num): if num==0: raise "num cant be 0" , num result=100/num
try: function(0) exception: "num cant be 0": do something
采用traceback模块查看异常
#引入python中的traceback模块,跟踪错误 import traceback try: sentence except: traceback.print_exc()
采用sys模块回溯最后的异常
import sys try: sentence info=sys.exc_info() print info[0],":",info[1]
自定义异常
写程序式时,可以通过创建一个新异常类定义自己的异常。异常类要求直接或者间接继承exception类。例如:
class myError(Exception): __init__(self,value): self.value=value
try: raise myError except myError: print 'myError occured'
以上输出 myError occured
或者
try: raise myError except myError,e: print 'myError occured' print e.value
以上输出 ‘myError occured’ 以及 value 的值。
e表示myError 类的实例对象,所以可以调用参数value。
相关文章推荐
- Python动态类型的学习---引用的理解
- Python3写爬虫(四)多线程实现数据爬取
- 垃圾邮件过滤器 python简单实现
- 下载并遍历 names.txt 文件,输出长度最长的回文人名。
- install and upgrade scrapy
- Scrapy的架构介绍
- Centos6 编译安装Python
- 使用Python生成Excel格式的图片
- 让Python文件也可以当bat文件运行
- [Python]推算数独
- Python中zip()函数用法举例
- Python中map()函数浅析
- Python将excel导入到mysql中
- Python在CAM软件Genesis2000中的应用
- 使用Shiboken为C++和Qt库创建Python绑定
- FREEBASIC 编译可被python调用的dll函数示例
- Python 七步捉虫法