module17_異常處理_example3.py輸出結果問題 #185
-
如圖所示
我想詢問: |
Beta Was this translation helpful? Give feedback.
Replies: 1 comment 1 reply
-
以上不管是哪一種錯誤或例外,都可以用
Python官方文件說明:https://docs.python.org/zh-tw/3/tutorial/errors.html 常見的(至少)兩種不同的錯誤類別為:語法錯誤 (syntax error) 和例外 (exception)。 語法錯誤 (Syntax Error)語法錯誤又稱剖析錯誤 (parsing error),它或許是學習 Python 的過程最常聽見的抱怨:
剖析器 (parser) 會重複犯錯的那一行,並用一個小「箭頭」指向該行檢測到的第一個錯誤點。錯誤是由箭頭之前的標記 (token) 導致的(或至少是在這裡檢測到的):此例中,錯誤是在 print() 函式中被檢測到,因為在它前面少了一個冒號(':')。檔案名稱和行號會被印出來,所以如果訊息是來自腳本時,就可以知道去哪裡找問題。 例外 (Exception)即使一段陳述式或運算式使用了正確的語法,嘗試執行時仍可能導致錯誤。執行時檢測到的錯誤稱為例外,例外不一定都很嚴重:你很快就能學會在 Python 程式中如何處理它們。不過大多數的例外不會被程式處理,並且會顯示如下的錯誤訊息:
錯誤訊息的最後一行指示發生了什麼事。例外有不同的類型,而類型名稱會作為訊息的一部份被印出。範例中的例外類型為:ZeroDivisionError、NameError 和 TypeError。作為例外類型被印出的字串,就是發生的內建例外 (built-in exception) 的名稱。所有的內建例外都是如此運作,但對於使用者自定的例外則不一定需要遵守(雖然這是一個有用的慣例)。標準例外名稱是內建的識別字 (identifier),不是保留關鍵字 (reserved keyword)。 此行其餘部分,根據例外的類型及導致例外的原因,說明例外的細節。 錯誤訊息的開頭,用堆疊回溯 (stack traceback) 的形式顯示發生例外的語境。一般來說,它含有一個列出源程式碼行 (source line) 的堆疊回溯;但它不會顯示從標準輸入中讀取的程式碼。 內建的例外章節列出內建的例外及它們的意義。 |
Beta Was this translation helpful? Give feedback.
NameError
的原因可參考:https://docs.python.org/zh-tw/3/library/exceptions.html#NameError觸發原因為:找不到該名稱的區域變數或全域變數
3x
不可能是變數名稱,所以不會觸發NameError
例外,但又因為語法不完整,所以觸發SyntaxError
錯誤x3
有可能是變數名稱,但是找不到這個變數,所以觸發NameError
例外以上不管是哪一種錯誤或例外,都可以用
try ... except ...
捕捉錯誤,進行容錯處理。SyntaxError: unexpected EOF while parsing
:解析(語法)時,出現了未預期的檔案結尾(End of File)若在Jupyter Notebook輸入以下語法也會出現相同錯誤,我認為
3x
不可能會是變數,然而又不能正確描述此語法,所以SyntaxError
。Python官方文件說明:https://docs.python.org/zh-tw/3/tutorial/errors.html
常見的(至少)兩種不同的錯誤類別為:語法錯誤 (syntax error) 和例外 (exception)。
語法錯誤 (Syntax Error)
語法錯誤又稱剖析錯誤 (parsing error),它或許是學習 Python 的過程最常聽見的抱怨: