go 错误处理

在默认情况下,当发生错误后(panic),程序就会退出(崩溃)。

如果希望发生错误后程序还能继续运行就要做错误处理

使用defer+recover来捕捉和处理异常

  • go语言追求简洁优雅,所有go不支持传统的try、catch、finally这种处理
  • go中引入的方式是:defer、panic、recover
  • go运行的时候抛出一个异常,通过defer通过recover来捕捉这个异常进行处理

 

package main

import "fmt"

func test() {
	// 使用defer+recover来捕捉和处理异常
	defer func() {
		err := recover() // recover内置函数,可以捕捉到异常
		if err != nil {  //说明捕捉到错误
			fmt.Println("ERROR:", err)
		}
	}()
	num1 := 10
	num2 := 2
	res := num1 / num2
	fmt.Println(res)
}

func main() {
	test()
}

  

使用自定义来处理错误

GO 程序中支持自定义错误,使用errors.New和panic内置函数

  1. errors.New("错误说明"),会返回个error类型的值,表示一个错误
  2. panic内置函数,接收一个interface{}类型的值(任何值)作为参数。可以接手error类型的变量,输出错误信息,并退出程序。
package main

import (
	"errors"
	"fmt"
)


func readconf(name string) error {
	if name == "config.ini" {
		fmt.Println("读取文件中....")
		return nil
	}
	return errors.New("读取文件错误")

}

func main() {
	// test()
	err := readconf("config.ii")
	if err != nil {
		fmt.Println(err)
	}
}

  

 

posted @ 2020-04-23 15:12  枯藤老艹树  阅读(194)  评论(0编辑  收藏  举报