Go 错误处理

痞子汤 · · 981 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

// errmsg.go
package main

import (
	"errors"
	"fmt"
)

type DivideError struct {
	dividee int
	divider int
}

func (de *DivideError) Error() string {
	strFormat := `
		Cannot proceed, the divider is zero.
		dividee: %d
		divider: %d
	`
	return fmt.Sprintf(strFormat, de.dividee, de.divider)
}

func PrintErrTest() error {
	return errors.New("error!!!!")
}

func Divide(varDividee int, varDivider int) (result int, errormsg string) {
	if varDivider == 0 {
		dData := DivideError{
			dividee: varDividee,
			divider: varDivider,
		}
		errormsg = dData.Error()
		return
	} else {
		return varDividee / varDivider, ""
	}
}

func main() {
	//  1
	error := PrintErrTest()
	if error != nil {
		fmt.Println(error)
	}

	// 2
	if result, errorMsg := Divide(100, 10); errorMsg == "" {
		fmt.Println("100/10 =", result)
	}

	if _, errorMsg := Divide(100, 0); errorMsg != "" {
		fmt.Println("errorMsg is :", errorMsg)
	}
}

输出:

error!!!!
100/10 = 10
errorMsg is : 
		Cannot proceed, the divider is zero.
		dividee: 100
		divider: 0

 


有疑问加站长微信联系(非本文作者)

本文来自:开源中国博客

感谢作者:痞子汤

查看原文:Go 错误处理

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

981 次点击  
加入收藏 微博
1 回复  |  直到 1999-12-31 16:00:00
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传