2
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)

谢谢

4

2 回答 2

7
except ShortInputException, x:

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

更常见的语法是

except ShortInputException as x

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


Exception.__init__(self)

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

于 2012-05-23T06:22:27.073 回答
1

这条线有什么用?:Exception.__init__(self)

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

except ShortInputException, x:

文档

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

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

x在您的示例中是引发的异常对象。

于 2012-05-23T06:31:18.993 回答