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)
没有直接的方法,因为不同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.
只能手动; 例如:
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)