Go語言之異常處理
阿新 • • 發佈:2021-11-24
一、基本介紹
在Go中不支援傳統的try...catch...finally這種處理,在Go中引入了defer、panic、recover處理方式,通過丟擲一個panic異常,然後在defer中通過recover捕獲這個異常,最後正常處理。
package main import ( "fmt" ) func test() { defer func() { err := recover() // recover() 內建函式,可以捕獲到異常 if err != nil { fmt.Println("err=", err) } }() n1 := 5 n2 := 0 res := n1 / n2 fmt.Println("res=", res) } func main() { test() } /* err= runtime error: integer divide by zero */
進行錯誤處理的好處的可以及時預警,通過郵件或者其它的方式來避免一些嚴重後果的產生。
二、自定義異常處理
Go程式中,也支援自定義異常處理,使用errors.New和panic內建函式。其中:
- errors.New("錯誤說明"),返回一個error型別的值,表示一個錯誤
- panic內建函式,接受一個interface型別的值(任何值)作為引數。可以接收error型別的變數,輸出錯誤資訊,並退出程式
package main import ( _"fmt" "errors" ) func cal(number int) (err error) { if number != 5 { return errors.New("輸入錯誤...") } else { return nil } } func test() { err := cal(10) if err != nil { panic(err) } } func main() { test() } /* err= runtime error: integer divide by zero作者:iveBoy 出處:http://www.cnblogs.com/shenjianping/ 本文版權歸作者和部落格園共有,歡迎轉載,但未經作者同意必須在文章頁面給出原文連線,否則保留追究法律責任的權利。*/