先看代碼:函數
輸出:code
內建函數panic
可讓咱們人爲地產生一個運行時恐慌。不過,這種致命錯誤是能夠被恢復的。在Go語言中,內建函數recover
就能夠作到這一點。blog
實際上,內建函數panic
和recover
是天生的一對。前者用於產生運行時恐慌,然後者用於「恢復」它。不過要注意,recover
函數必需要在defer
語句中調用纔有效。class
由於一旦有運行時恐慌發生,當前函數以及在調用棧上的全部代碼都是失去對流程的控制權。只有defer
語句攜帶的函數中的代碼纔可能在運行時恐慌迅速向調用棧上層蔓延時「攔截到」它。im
C#和Java有 try catch,而Go沒有,這種機制在Go語言裏就是panic和recover的方式。db