关于Python的异常处理:如何从发生异常紧接着处恢复执行

Python code
ef GBKCode():
    try:
        for i in range(0xA0,0xFF):
            for j in range(0xA1,0xFF):
                gbk = chr(i)+chr(j)
                print gbk.decode('gb2312'),
    except Exception,ex:
        print hex(i),hex(j)

GBKCode()



上面是我的代码,该代码用于遍历打印所有的GB2312字符。问题是:有些编码如\xA189是空位,在GB2312中没有使用,这样对这个编码进行decode()时就会导致异常。于是我就进行了异常捕获,可问题没有解决:
比如,上面的代码在从\xA0\xA0开始的几个编码成功的解码后,遇到了\xA1\x89这个不可以被解码的数值,于是就进入了异常。可是我希望的是退出异常后,代码能够继续对\xA190及其之后的代码接着执行,因为后面的数值可以被解码,可是程序没有按照我希望的执行,而是在执行异常处理之后直接退出了。这怎么处理啊???

作者: XIANXir   发布时间: 2011-06-09

"python使用“异常处理的终止模型”,因为引发异常的try块会在异常发生后立即“过期”。有的语言 使用“异常处理的恢复模型”,完成异常处理后,控制权会返回异常引发点,并从那个位置恢复执行。"

不会吧,我这么倒霉啊!!!??Python真得不能进行异常处理的恢复模型处理吗???

那我可怎么办啊??

作者: XIANXir   发布时间: 2011-06-09