我正在尝试使用异常处理制作一个简单的程序(用于学习目的)。我要做的是:
try:
x = int(input())
except ValueError as var:
# HERE I WANT TO USE THE 'x' STRING VALUE
我知道使用异常消息的各种方法(例如通过使用str(var)
)。
例如,如果输入bla
会导致ValueError异常,print(var)
输出invalid literal for int() with base 10: 'bla'
,这实际上是不可用的。
然而,我创建了这个程序,应该使用str(var)
为我的优势:
try:
x = int(input())
except ValueError as var:
s = str(var)
print('Exception message: ' +s)
i=0
while (s[i] != '''):
i = i+1
i = i+1
print_str = ''
while (s[i] != '''):
print_str = print_str + str(s[i])
i++
print('print_str = ' + print_str)
这个程序可能在做一些修改后就可以工作了。
所以我的问题是:是否有更直接的方法来获得'x'字符串值?
你不能在except
中访问x
,因为它是从未赋值的 -异常在int(input(...))
的某个地方抛出,在x =
发生之前。相反,做的事:
x = input(...)
try:
x = int(x)
except ValueError:
print("Couldn't make '{0}' an integer.".format(x))
进一步说明了jonsharpe的回答,您无法在编译时捕获大多数SyntaxError
。因此,即使运行代码也没有任何希望,更不用说从错误中恢复了。