python异常处理

异常捕捉形式

捕捉异常可以使用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,try-except)