2011-02-25 40 views
83

在蟒蛇的区别,有两种方法捕捉异常在Python中,什么是“除了异常为e”和“除例外,E”

except Exception, e: 

except Exception as e: 

好像“为E”是一个用于前进。在什么版本的Python中做了这个改变?任何想法为什么?

+14

'as e'语法是在Python 2.6中引入的。 – geoffspear 2011-02-25 16:30:03

+3

对于任何使用Jython的人来说,只要阅读此内容并决定用“Exception as e”替换所有“Exception,e”即可:从Jython 2.5.2开始它还不被支持。请参阅:http://stackoverflow.com/questions/3020966/jython-syntaxerror – 2011-08-08 06:59:03

回答

43

此PEP引入了旨在帮助消除Python语法歧义,简化异常类,简化异常垃圾回收以及减少Python 3.0中语言大小的更改。

PEP 3110: "Catching Exceptions in Python 3000"

+0

但我使用2.6,我有两种风格的访问。因为(卡住)他使用的是旧版本,所以我的同事必须通过代码更改为'except Exception,e',而不是'except Exception as e'。 – Nathan 2011-02-25 17:53:27

+3

新语法被回迁到2.6,但旧语法未被删除。 – 2011-02-25 17:55:57

12

为什么:Exception, eException, TypeError很难区分的简短答案。长的回答:伊格纳西奥所说的。

相关问题