Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Code Block
package main
import "fmt"
func main(){
    test()
    fmt.Println("上面的除法操作执行成功。。。")
    fmt.Println("正常执行下面的逻辑。。。")
}
func test(){
    num1:=10
    num2:=5
    result:=num1/num2
    fmt.Println(result)
}

如果num2为5的情况下,main函数能够正常执行,如果num2为0的情况下会报错

Image Added

程序中出现错误之后程序会被中断,无法继续执行。

加入defer+recover机制之后

Code Block
package main

import "fmt"

func main() {
	test()
	fmt.Println("上面的除法操作执行成功。。。")
	fmt.Println("正常执行下面的逻辑。。。")
}
func test() {
    defer func() {
        err:=recover()
        if err !=nil{
            fmt.Println("错误已经被捕获")
            fmt.Println("err是::",err)
        }
    }()
	num1 := 10
	num2 := 0
	result := num1 / num2
	fmt.Println(result)
}

Image Added