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() }