錯誤處理
- 錯誤處理案例
- 錯誤處理基本說明
- 使用defer+recover來處理錯誤
- 錯誤處理的好處
- 自定義錯誤
- 自定義錯誤的介紹
- 案例說明
錯誤處理案例
看下面代碼:
package main
import(
"fmt"
)
func test(){
num1 := 10
num2 := 0
res := num1 / num2
fmt.Println("res =",res)
}
func main(){
test()
fmt.Println("main()下面的代碼")
}
運行結果:

說明:
- 在默認情況下,當發生錯誤后(panic),程式就會退出(崩潰).
- 如果我們希望當程式發生錯誤后,可以捕獲到錯誤,并進行處理,保證程式可以繼續執行,還可以在捕獲到錯誤后,給管理員一個提示(郵件,短信…),這里就需要引出錯誤處理機制,
錯誤處理基本說明
- Go語言追求簡潔優雅,所以,Go語言不支持傳統的try…catch…finally這種處理
- Go中引入的處理方式為:defer,panic,recover
- 例外使用場景簡單描述:Go中可以拋出一個panic例外,然后再defer中通過recover捕獲這個例外,然后正常處理,
使用defer+recover來處理錯誤
代碼:
package main
import(
"fmt"
//"errors"
)
func test(){
//使用defer + recover來捕獲和處理例外
defer func(){
//recover()內置函式,可以捕獲到例外
err := recover()
if err != nil{//說明捕獲到錯誤與
fmt.Println("err =",err)
}
}()
num1 := 10
num2 := 0
res := num1 / num2
fmt.Println("res =",res)
}
func main(){
test()
fmt.Println("main()下面的代碼")
}
運行結果:

錯誤處理的好處
進行錯誤處理后,程式不會輕易掛掉,如果加入預警代碼,就可以讓程式更加健壯,

自定義錯誤
自定義錯誤的介紹
Go程式中,也支持自定義錯誤,使用errors.New和panic內置函式,
- errors.New("錯誤說明”),會回傳一個error型別的值,表示一個錯誤,
- panic內置函式,接收一個interface{}型別的值(也就是任何值)作為引數,可以接收error型別的變數,輸出錯誤資訊,并退出程式,
案例說明
package main
import(
"fmt"
"errors"
)
//函式讀取組態檔資訊,如果檔案名傳入不正確,就回傳一個自定義錯誤
func readConf(name string)(err error){
if name == "config.ini"{
//讀取檔案
return nil
}else{
//回傳一個自定義錯誤
return errors.New("讀取檔案錯誤..")
}
}
func test(){
err := readConf("config.ini")
if err != nil{
//如果讀取檔案發送錯誤,就輸出這個錯誤,并終止程式
panic(err)
}
fmt.Println("test()繼續執行...")
}
func main(){
test()
fmt.Println("main()下面的代碼")
}
運行結果:

錯誤輸出:

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/262994.html
標籤:其他
上一篇:基于51單片機的紅外接收
