继续前面的精彩帮助后,我现在遇到异常处理问题。 我有一个由他们的索引号选择的11个地块的清单。如果用户选择高于11,它应该请求他们重新进入但是atm,我得到IndexError:list index超出范围。 我会认为except行只会处理其他任何事情......但它必须只是一个缺失的行?
try:
response = raw_input("Select a monitoring plot from the list (0-11): ")
if response == 'q':
confirm = raw_input('Confirm quit (y/ n)...')
if confirm == 'y':
print 'Bye'
break
else:
continue
selected = dataList[int(plotSelect) + 1]
print 'You selected : ', selected[1]
except ValueError:
print "Error: Please enter a number between 0 and 11"
答案 0 :(得分:4)
except ValueError
只能抓取ValueError
。您还需要添加IndexError
:
except (ValueError, IndexError):
答案 1 :(得分:0)
except ValueError
表示您只捕获ValueError
类型的例外。如果你想以不同的方式处理它,或者同时捕获它们并以相同的方式处理它,请包含IndexError
的catch。
答案 2 :(得分:0)
ValueError
会出现。 (所以int("hello")
抛出ValueError
)
IndexError
。 (例如,range(5)[7]
您可能想尝试使用如下所示的循环获取第一个输入
resp = ""
while resp not in ('0', '1', ... '10', 'q'):
resp = raw_input(...)