2014-06-10 204 views
0

我正在嘗試使用異常處理來製作一個簡單的程序(用於學習目的)。 我試圖做的是: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'字符串值的方法?

+1

是的,'我++'語法無效。它與異常處理無關。 –

+0

Python不是C++或Java。 – Christian

+0

修正了它,我的不好(可能是因爲我更經常使用C++)。那個較低的程序不是這個問題的主要目的。 – user3175215

回答

4

你不能在except訪問x,因爲它是從未分配 - 異常在int(input(...))某處拋出,x =發生之前。相反,這樣做:

x = input(...) 
try: 
    x = int(x) 
except ValueError: 
    print("Couldn't make '{0}' an integer.".format(x)) 
+0

明白了,好主意,工作正常 – user3175215

1

深化jonsharpe的反應,你可以抓不住最SyntaxError S作爲他們在編譯時發生。因此,即使運行代碼也沒有希望,不必介意從錯誤中恢復過來。