获取导致IndexError异常的索引

PKa*_*ura 10 python python-2.7

是否有可能获得导致IndexError异常的索引?

示例代码:

arr = [0, 2, 3, 4, 5, 6, 6]
try:  
   print arr[10] # This will cause IndexError
except IndexError as e:
    print e.args # Can I get which index (in this case 10) caused the exception?
Run Code Online (Sandbox Code Playgroud)

vau*_*tah 6

没有直接的方法,因为不同KeyError,IndexError尚未提供此信息(尚未).你也可以继承内置list提高IndexError你想要的参数:

class vist(list): # Verbose list
    def __getitem__(self, item):
        try:
            v = super().__getitem__(item) # Preserve default behavior
        except IndexError as e:
            raise IndexError(item, *e.args) # Construct IndexError with arguments

        return v

arr = [0, 2, 3, 4, 5, 6, 6] # list
arr = vist(arr) # vist

try:
    arr[10]
except IndexError as e:
    print(e.args) # (10, 'list index out of range')
Run Code Online (Sandbox Code Playgroud)

实际上,您甚至不需要将其转换回正常状态list.


tim*_*geb 5

只能手动; 例如:

arr = [1,2,3]
try:
    try_index = 42
    print(arr[try_index])
except IndexError:
    print 'Index', try_index, 'caused an IndexError'
Run Code Online (Sandbox Code Playgroud)