关于Python的异常处理:如何从发生异常紧接着处恢复执行
Python code
上面是我的代码,该代码用于遍历打印所有的GB2312字符。问题是:有些编码如\xA189是空位,在GB2312中没有使用,这样对这个编码进行decode()时就会导致异常。于是我就进行了异常捕获,可问题没有解决:
比如,上面的代码在从\xA0\xA0开始的几个编码成功的解码后,遇到了\xA1\x89这个不可以被解码的数值,于是就进入了异常。可是我希望的是退出异常后,代码能够继续对\xA190及其之后的代码接着执行,因为后面的数值可以被解码,可是程序没有按照我希望的执行,而是在执行异常处理之后直接退出了。这怎么处理啊???
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真得不能进行异常处理的恢复模型处理吗???
那我可怎么办啊??
不会吧,我这么倒霉啊!!!??Python真得不能进行异常处理的恢复模型处理吗???
那我可怎么办啊??
作者: XIANXir 发布时间: 2011-06-09