golang学习笔记——异常

2021-03-04 15:06:27 浏览数 (1)

自定义异常的两种方式

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

}

0 人点赞