1. 程式人生 > >Go 初體驗 - 錯誤與異常處理 - recover和panic

Go 初體驗 - 錯誤與異常處理 - recover和panic

當前 都是 inf defer bubuko bsp 分享 def catch

先看代碼:

技術分享圖片

輸出:

技術分享圖片

內建函數panic可以讓我們人為地產生一個運行時恐慌。不過,這種致命錯誤是可以被恢復的。在Go語言中,內建函數recover就可以做到這一點。

實際上,內建函數panicrecover是天生的一對。前者用於產生運行時恐慌,而後者用於“恢復”它。不過要註意,recover函數必須要在defer語句中調用才有效。

因為一旦有運行時恐慌發生,當前函數以及在調用棧上的所有代碼都是失去對流程的控制權。只有defer語句攜帶的函數中的代碼才可能在運行時恐慌迅速向調用棧上層蔓延時“攔截到”它。

C#和Java有 try catch,而Go沒有,這種機制在Go語言裏就是panic和recover的方式。

Go 初體驗 - 錯誤與異常處理 - recover和panic