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)
由于
答案 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
是引发的异常对象。