Python3异常处理



我正在尝试使用异常处理制作一个简单的程序(用于学习目的)。我要做的是:

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。因此,即使运行代码也没有任何希望,更不用说从错误中恢复了。

最新更新