golang學習筆記——異常

自定義異常的兩種方式
package main
 
import (
    "errors"
    "fmt"
)
 
func main() {
    //使用fmt.Errorf
    err1 := fmt.Errorf("%s", "this is normal error")
    fmt.Println(err1)
    //使用errors
    err2 := errors.New("this is a not param error")
    fmt.Println(err2)
}
  • 應用
package main
 
import (
    "errors"
    "fmt"
)
 
func MyDiv(a, b int) (result int, err error) {
    err = nil
    if b == 0 {
         err = errors.New("分母不能爲0")
    } else {
         result = a / b
    }
    return
}
 
func main() {
    result, err := MyDiv(6, 0)
    if err == nil {
        fmt.Println("result = ", result)
    } else {
        fmt.Println(err)
    }
}
 
panic函數的使用
  • 會終止程序的運行
package main
 
import (
    "fmt"
)
 
func test1() {
    fmt.Println("11111111111")
}
 
func test2() {
    fmt.Println("222222222222")
    panic("this is a panic error")
}
 
func test3() {
    fmt.Println("333333333333")
}
 
func main() {
    test1()
    test2()
    test3()
}
 
 
recover函數的使用(防止引起panic錯誤時導致程序終止)
  • 只能放到defer函數中使用
package main
 
import (
    "fmt"
)
 
func test1() {
    fmt.Println("11111111111")
}
 
func test2(x int) {
    defer func() {
         if err := recover(); err != nil {
             fmt.Println(err)
         }
    }()
    var a [10]int
    a[x] = 20
}
 
func test3() {
    fmt.Println("333333333333")
}
 
func main() {
    test1()
    test2(20)
    test3()
}
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章