1. 程式人生 > 其它 >Go語言之異常處理

Go語言之異常處理

一、基本介紹

在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/ 本文版權歸作者和部落格園共有,歡迎轉載,但未經作者同意必須在文章頁面給出原文連線,否則保留追究法律責任的權利。