現(xiàn)在有這樣一個問題:某函數(shù)如果正常執(zhí)行,返回0,如果panic,則返回1,怎么搞呢?
package main
import "fmt"
func test() int {
defer func() {
if err := recover(); err != nil {
return 1
}
}()
var p *int
*p = 0
return 0
}
func main() {
fmt.Println("ret is", test())
for {}
}
這樣顯然不行,因為那個return 1是針對匿名函數(shù)的, 而非test函數(shù)。
來看一個巧妙的方法:
package main
import "fmt"
func test() (a int) {
defer func() {
if err := recover(); err != nil {
a = 1
}
}()
var p *int
*p = 0
return 0
}
func main() {
fmt.Println("ret is", test())
for {}
}
OK.
不多說。
總結
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對腳本之家的支持。如果你想了解更多相關內(nèi)容請查看下面相關鏈接
您可能感興趣的文章:- Go中recover與panic區(qū)別詳解
- Golang捕獲panic堆棧信息的講解
- go語言的panic和recover函數(shù)用法實例
- go語言異常panic和恢復recover用法實例
- GO語言異常處理機制panic和recover分析
- 詳解go中panic源碼解讀