zoukankan      html  css  js  c++  java
  • Go:错误处理

    在默认情况下,当程序发生错误(panic)后,程序就会退出(崩溃),所以我们希望,当程序发生错误后,可以捕获到错误,并进行处理,保证程序可以继续执行。比如捕获到错误后,打入日志或给管理员一个提示(邮件、短信等),一遍后续修复。

    使用 defer + recover 来处理错误:

    package main
    
    import (
    	"fmt"
    )
    
    func test() {
    	defer func() {
    		err := recover() // recover内置函数可以捕获到异常
    		if err != nil {  // 说明捕获到异常
    			fmt.Println(err) // runtime error: integer divide by zero
    			// 后续操作就可以将错误打入日志等
    		}
    	}()
    	a := 10
    	b := 0
    	result := a / b
    	fmt.Println("result:", result)
    }
    
    func main() {
    	test()
    }
    

    自定义错误:

    • errors.New("错误说明"),会返回一个 error 类型的值,表示一个错误;
    • panic 内置函数,接收一个interface{}类型的值(任何值)作为参数。可以接收 error 类型的变量,输出错误信息,并退出程序。
    package main
    
    import (
    	"errors"
    	"fmt"
    )
    
    func readConfig(name string) (err error) {
    	if name == "my.ini" {
    		return nil
    	} else {
    		// 返回一个自定义错误
    		return errors.New("读取的配置文件名错误")
    	}
    }
    
    func test() {
    	err := readConfig("xx.ini")
    	if err != nil {
    		// 如果读取文件发生错误,就输出这个错误,并终止程序
    		panic(err)
    	} else {
    		fmt.Println("继续执行后续操作...")
    	}
    }
    
    func main() {
    	test()
    }
    

     

  • 相关阅读:
    Redis3.2集群部署安装
    熟悉SQL Server 数据类型
    泛型的参数简介和参数约束
    流(Stream)与文件流(FileStream)
    C#提取双引号中的字符串
    数组,一维数组,二维数组,交错数组
    结构,枚举
    C#中唯一的三元运算符
    位运算
    异常处理语句
  • 原文地址:https://www.cnblogs.com/believepd/p/10920833.html
Copyright © 2011-2022 走看看