前言
在go程序中,如果程序发生异常,那么程序就会中断,go提供Recover()恢复异常处理
异常处理
Java是通过try{}catch捕获异常
public class HelloService {
public static void main(String[] args) {
try {
int a = 1 / 0;
} catch (Exception e) {
e.printStackTrace();
}
System.out.println("执行结束=====================");
}
}
go中使用Recover()
package main
import (
"fmt"
"log"
)
func main() {
say()
fmt.Println("执行结束==========================")
}
func say() {
var (
a = 2
b = 0
)
c := a / b
log.Println("结果为:", c)
}
执行结果为
程序不会往下执行
package main
import (
"fmt"
"log"
)
func main() {
say()
fmt.Println("执行结束==========================")
}
func say() {
defer func() {
err := recover()
if err != nil {
fmt.Println("err错误信息:", err)
}
}()
var (
a = 2
b = 0
)
c := a / b
log.Println("结果为:", c)
}
执行结果为
程序可以继续往下执行
总结
合理使用recover()可以有利于程序执行,而且要注意的是recover只能捕获同一goroutine内发生的panic