2014-02-27 53 views
-5

我正在學習Python的異常,我已經試過這樣Python異常終於沒有工作

try: 
fh = open("testfile", "r") 
fh.write("This is my test file for exception handling!!") 

except IOError: 
print "Error: can\'t find file or read data" 
else: 

    print "Written content in the file successfully" 

finally: 
print "our exceptions are false" 

東西時,我沒有finally節我無法找到或讀取數據的輸出以及時執行的代碼我用finally執行代碼我收到縮進錯誤。我不知道爲什麼會發生這種情況。

+8

由於代碼沒有正確縮進,您將收到縮進錯誤。 – bereal

+5

你的帖子在這裏也有嚴重的縮進錯誤;我們無法確定您實際看到的錯誤。請發佈*精確*代碼,然後選擇代碼塊並使用工具欄上的「{}」按鈕對其進行格式化。請給我們確切的例外。 –

+0

我只有這個代碼,我已經發布在這裏.am只是一個初學者在python中..你能告訴我如何使用終於在這裏?.. – user3356408

回答

1

看起來您的代碼的主要問題是縮進。這是一個可能的解決方案。

Python在某些語句後需要縮進,其中一些是條件語句,循環,異常處理,函數和類,這樣代碼更易讀易懂。

例如,這裏是一個函數。只看到代碼,你可以看看會發生什麼,發生

def f(arg=i): 
    print arg 

「功能」內,並且類似於當你與一個條件,循環工作發生什麼,在壓痕的不同狀態會發生什麼「內」循環。

a = ['Mary', 'had', 'a', 'little', 'lamb'] 
for i in range(len(a)): 
    print i, a[i] 

例外有代碼塊,因爲它們表示不同的測試用例。如下所示。

try: 
     x = int(raw_input("Please enter a number: ")) 
     print x 
     break 
    except ValueError: 
     print "Oops! That was no valid number. Try again..." 

代碼的縮進的級別稱爲代碼嵌套,你可以用這個類別的多個工作(循環,異常處理,函數和類)時有壓痕的多個級別。下面的代碼有兩個縮進級別。

def fib(n):     1 
    print 'n =', n   2 
    if n > 1:     3 
     return n * fib(n - 1) 
    else:      4 
     print 'end of the line' 
     return 1 

可以工作的解決方案是這樣的。

try: 
    fh = open("testfile", "r") 
    fh.write("This is my test file for exception handling!!") 

except IOError: 
    print "Error: can\'t find file or read data" 
else: 
    #I think this should be done here 
    fh.close() 
    print "Written content in the file successfully" 
finally: 
    print "our exceptions are false" 
+0

IT幫助。謝謝很多.. – user3356408

+0

給OP答案和OP沒有學到任何東西。| = ^/ –

+0

感謝您的評論,我會改進答案。 – Leonardo

1

這不是最後的問題,而是你的indentation

例如,這樣的:

try: 
fh = open("testfile", "r") 
fh.write("This is my test file for exception handling!!") 

它行不通因爲Python要求縮進您的代碼。你想它看起來是這樣的:

try: 
    #every new block is evenly indented 
    fh = open("testfile", "r") 
    fh.write("This is my test file for exception handling!!") 

這現在正確縮進Python(甚至更容易閱讀)。您需要在所有類似於以下格式的代碼中修復此問題:

#creating new block (try block) 
try: 
    #code 
    #indented 
    #here 
#creating new block (except block) 
except IOError: 
    #handle 
    #error 
#rest of your code