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()
}
 
posted @ 2021-02-28 16:14  GPHPER  阅读(94)  评论(0编辑  收藏  举报
TOP