我目前正在学习Python,并且在本练习中您必须处理异常。此目标的目的是在给定键的值不在列表“ self.data”的范围内时引发异常。

我应该在函数中输入以下内容对其进行测试:

v = Vecteur(-9, -6, 2, 3, -2)
v[-1]


现在我应该得到一个IndexError

class Vecteur:
    def __init__(self, *valeurs):
        self.data = list(valeurs)

    def __getitem__(self,key):

        try:
            erreur = self.data[key]
        except IndexError:
            print('indice invalide pour ce vecteur')

        return self.data[key]

    def __setitem__(self,key,item):
        self.data[key] = item


你们中的一个能启发我这个话题吗?

提前致谢!

最佳答案

您的问题源于以下事实:您正在捕获IndexError,然后print ing,并让执行失败。

我会这样做:

class Vecteur:
    def __init__(self, *valeurs):
        self.data = list(valeurs)

    def __getitem__(self,key):

        try:
           return self.data[key]
        except IndexError:
            raise IndexError('indice invalide pour ce vecteur')

    def __setitem__(self,key,item):
        self.data[key] = item


顺便说一句,-1是有效索引。因此,您可能需要更改__getitem__

def __getitem__(self, key):
    if key < 0:
        raise ValueError("Index has to be greater than 0")
    # the rest of your __getitem__ here

关于python - 使用列表处理IndexError异常,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34998973/

10-12 07:26