首頁 >後端開發 >Golang >golang怎麼截獲錯誤

golang怎麼截獲錯誤

silencement
silencement原創
2019-12-25 13:17:211944瀏覽

golang怎麼截獲錯誤

Golang中引入error介面類型作為錯誤處理的標準模式,如果函數要回傳錯誤,則傳回值類型清單中肯定包含error。 error處理過程類別

似於C語言中的錯誤碼,可逐層返回,直到被處理。

Golang中引入兩個內建函數panic和recover來觸發和終止異常處理流程,同時引入關鍵字defer來延遲執行defer後面的函數。

一直等到包含defer語句的函數執行完畢時,延遲函數(defer後面的函數)才會被執行,而不管包含defer語句的函數是透過return的正

#常結束,還是由於panic導致的異常結束。你可以在一個函數中執行多條defer語句,它們的執行順序與宣告順序相反。

推薦學習《golang教學

當程式執行時,如果遇到引用空指標、下標越界或明確呼叫panic函數等情況,則先觸發panic函數的執行,然後呼叫延遲函數。呼叫

者繼續傳遞panic,因此該過程一直在呼叫堆疊中重複發生:函數停止執行,呼叫延遲執行函數等。如果一路在延遲函數中沒有recover

函數的調用,則會到達該攜程的起點,該攜程結束,然後終止其他所有攜程,包括主攜程(類似於C語言中的主線程,該攜程ID為

1)。

錯誤和異常從Golang機制上講,就是error和panic的差別。很多其他語言也一樣,例如C /Java,沒有error但有errno,沒有panic

但有throw。

Golang錯誤和異常是可以互相轉換的:

錯誤轉異常,例如程式邏輯上嘗試請求某個URL,最多嘗試三次,嘗試三次的過程中請求失敗是錯誤,嘗試完第三次還不成功的話,

失敗就被提升為異常了。異常轉錯誤,例如panic觸發的異常被recover恢復後,將傳回值中error類型的變數進行賦值,以便上層函數

繼續走錯誤處理流程。

以上是golang怎麼截獲錯誤的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn