看板 Python 關於我們 聯絡資訊
原文網址:http://google-styleguide.googlecode.com/svn/trunk/pyguide.html * Exceptions Exception 應小心使用。 釋義: Exception 用來中斷正常的程式邏輯,以應付錯誤及非預期的狀況。 優點: 程式主體不會被處理錯誤的程式所攪亂。當狀況發生時,exception 能夠直接從深 層的程式中直接跳出。如:從 n 層的函式中直接返回,而不需要一層一層地處理 回傳的錯誤代碼。 缺點: 整個程式的流程可能變得令人困惑。 決策: 使用 exception 必須遵守一些法則。 需要 raise exception 時,使用以下兩種格式: raise MyException('Error message'),或者 raise Exception。 不要使用以下這幾種格式 (雖然它們目前仍是合法的格式): raise MyException, 'Error message',或 raise 'Error message'。 module 或 package 應該要繼承內建的 exception 類別來定義自己的 exception 類 別,一個 module 的 base exception 得命名為 Error: class Error(Exception): pass Python 裡的 catch-all except 會補捉所有的意外事件,包括:拼字錯誤、使用 sys.exit()、Ctrl+C 鍵盤中斷、unittest 中不符合預期的項目、及任何非預期內 的 exception。因此,應儘可能避免使用 catch-all except。少數可以使用 catch-all except 的情形有: re-raising exception (編案:re-raise 是一種 python 常用的手法用來重現剛拋出的異常)、或者你已經在最外層的程式中而想要 補捉所有你沒考慮到的 exception 以印出錯誤的細節。 讓 try/except 區塊中的程式碼儘量少。try 區塊中的程式碼愈長,其中愈有可能 出現意料之外的錯誤,這些意外的錯誤可能因為 except 區塊而被隱藏。 用 finally 來處理無論意外發生與否都應該要執行的程式片段。這常被用來清理資 源,如:關閉檔案。 在捕捉例外時,使用 as 來取代逗點,如: try: raise Error except Error as error: pass 編案:as 的用法在較新的 python 版本才開始支援,某些 code 用逗點只是語言演 變的歷史因素。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 68.232.121.105