关于Golang panic用法详解
生活随笔
收集整理的這篇文章主要介紹了
关于Golang panic用法详解
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
下面由golang教程欄目給大家介紹關(guān)于Golang panic用法詳解,希望對(duì)需要的朋友有所幫助!
Go語言追求簡(jiǎn)潔優(yōu)雅,所以,Go語言不支持傳統(tǒng)的 try…catch…finally 這種異常,因?yàn)镚o語言的設(shè)計(jì)者們認(rèn)為,將異常與控制結(jié)構(gòu)混在一起會(huì)很容易使得代碼變得混亂。
因?yàn)殚_發(fā)者很容易濫用異常,甚至一個(gè)小小的錯(cuò)誤都拋出一個(gè)異常。在Go語言中,使用多值返回來返回錯(cuò)誤。不要用異常代替錯(cuò)誤,更不要用來控制流程。在極個(gè)別的情況下,也就是說,遇到真正的異常的情況下(比如除數(shù)為 0了)。才使用Go中引入的Exception處理:defer, panic, recover。
這幾個(gè)異常的使用場(chǎng)景可以這么簡(jiǎn)單描述:Go中可以拋出一個(gè)panic的異常,然后在defer中通過recover捕獲這個(gè)異常,然后正常處理。
package main
import "fmt"func main(){
defer func(){ // 必須要先聲明defer,否則不能捕獲到panic異常
fmt.Println("c") if err:=recover();err!=nil{
fmt.Println(err) // 這里的err其實(shí)就是panic傳入的內(nèi)容,55 }
fmt.Println("d")
}()
f()
}
func f(){
fmt.Println("a")
panic(55)
fmt.Println("b")
fmt.Println("f")
}
輸出結(jié)果:
a
c
d
exit code 0, process exited normally.
總結(jié)
以上是生活随笔為你收集整理的关于Golang panic用法详解的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php单引号与双引号的区别是什么
- 下一篇: 深圳seo网站优化排名实用技巧!