/**
golang defer
*/
package main
import (
"fmt"
)
var p = fmt.Println
var pf = fmt.Printf
func div(a, b int) int {
defer func() {
//func recover() interface{} recover爲內建函數
err := recover()
if err != nil {
p(err)
}
}()
return a / b
}
/* 內建的接口 error
type error interface {
Error() string
}
*/
type MyError struct {
ErrorInfo string
}
func (this *MyError) Error() string {
return this.ErrorInfo
}
func main() {
div(2, 0)
p("------main--------")
defer func() {
p("----main finally1------")
err := recover()
if err != nil {
p(err)
}
}()
defer func() {
p("----main finally2------")
err := recover()
if err != nil {
p(err)
panic(MyError{ErrorInfo: "又一個測試"})
}
}()
//func panic(v interface{}) 一個error
panic(MyError{ErrorInfo: "這個一個測試"})
}
golang 異常處理
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.