提出例外问题

时间:2011-12-29 16:32:27

标签: python

这是我的代码:

class longInputException(Exception):
    def __init__(self, length, max):
        Exception.__init__(self)
        self.length = len(length)
        self.max = max

try:
    max = 3
    s = raw_input('Enter something-->')
    if len(s) > max:
        raise longInputException(s, max)

except longInputException, x:
    print 'longInputException: the input was of length %d, \
was expecting less than or equal to %d' % (x.length, x.max)

else:
    print 'No exception was raised.'

我不明白为什么在x的{​​{1}}声明中使用了longInputException。为什么不在替换元组中使用except

3 个答案:

答案 0 :(得分:3)

self __init__()方法中当前对象的名称(因为您提供了self作为__init__()'中的第一个参数定义),它不能在它之外访问。

可选择你可以这样做(虽然这是你应该做的事情,因为这可能会让人们误解哪个变量是哪个):

except longInputException, self:
    print 'longInputException: the input was of length %d, \
was expecting less than or equal to %d' % (self.length, self.max)

else:
    print 'No exception was raised.'

它能回答你的问题吗?

通过阅读Python中的闭包和命名空间,您可以了解更多相关信息。

答案 1 :(得分:0)

如果你的try ... except语句是在另一个类的实例化中,并且你在except语句中使用了“self”,那么“self”将引用实例化的类,而不是实例化的异常类。

答案 2 :(得分:0)

我认为这是因为你不知道你指的是哪个例外。您通常只在对象内使用“自我”。