Python3异常处理

时间:2014-06-10 20:57:24

标签: exception python-3.x exception-handling

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

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'字符串值?

2 个答案:

答案 0 :(得分:4)

您无法访问x中的except,因为它从未被分配 - int(input(...))之前x =中的异常被抛出x = input(...) try: x = int(x) except ValueError: print("Couldn't make '{0}' an integer.".format(x)) } 发生。相反,做:

{{1}}

答案 1 :(得分:1)

进一步jonsharpe的响应,在编译时发生>时,您无法捕获大多数SyntaxError。因此,即使运行代码也没有任何希望,更不用说从错误中恢复了。