尝试在python中除外:语法问题

时间:2012-05-23 06:20:32

标签: python

class ShortInputException(Exception):
'''A user-defined exception class.'''
          def __init__(self, length, atleast):
                Exception.__init__(self)
                self.length = length
                self.atleast = atleast
try:
          s = raw_input('Enter something --> ')
          if len(s) < 3:
                raise ShortInputException(len(s), 3)


except ShortInputException, x:
           print 'ShortInputException: The input was of length %d, \
           was expecting at least %d' % (x.length, x.atleast)

我不理解这一行的语法:except ShortInputException, x:

这里的x是什么? 为什么它作为一个对象?

这条线路吗? :Exception.__init__(self)

由于

2 个答案:

答案 0 :(得分:7)

except ShortInputException, x:

捕获类ShortInputException的异常,并将异常对象的实例绑定到x。

更常见的语法是

except ShortInputException as x

PEP3110中所述,是优选的。除非您需要支持Python 2.5,否则您应该使用as版本。


Exception.__init__(self)

调用超类的构造函数,即该用户定义类派生自的类。

答案 1 :(得分:1)

  

这条线路吗? :Exception.__init__(self)

ShortInputException(Exception)将您的班级ShortInputException声明为Exception的子类。 Exception.__init__(self)调用父类的构造函数。

except ShortInputException, x:

来自doc

  

发生异常时,它可能具有关联值,也称为异常参数。参数的存在和类型取决于异常类型。

     

except子句可以在异常名称(或元组)之后指定一个变量。该变量绑定到一个异常实例,其参数存储在instance.args。

您的示例中的

x是引发的异常对象。