您的位置:首页 > 编程语言 > Python开发

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。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息