文档章节

Go 错误处理

老汉-憨憨
 老汉-憨憨
发布于 2017/05/06 19:00
字数 127
阅读 20
收藏 0
// 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 (interface)接口
下一篇: go 反射
老汉-憨憨
粉丝 20
博文 322
码字总数 68382
作品 0
深圳
程序员
私信 提问
PHP 完善的 Error / Exception 的捕获与处理

PHP(PHP_VERSION >= 7) 的 Error / Exception 的捕获与处理还是值得一说的,优雅处理错误与异常,在提升框架友好度的同时,也提升了开发效率。 PHP 错误等级 以上为 PHP 的一些错误监听级别...

big_cat
2018/05/22
0
0
JavaScript中错误正确处理方式,你用对了吗?

JavaScript的事件驱动范式增添了丰富的语言,也是让使用JavaScript编程变得更加多样化。如果将浏览器设想为JavaScript的事件驱动工具,那么当错误发生时,某个事件就会被抛出。理论上可以认为...

powertoolsteam
2017/10/10
0
0
JavaScript中错误正确处理方式,你用对了吗?

JavaScript的事件驱动范式增添了丰富的语言,也是让使用JavaScript编程变得更加多样化。如果将浏览器设想为JavaScript的事件驱动工具,那么当错误发生时,某个事件就会被抛出。理论上可以认为...

powertoolsteam
2017/10/10
0
0
MySQL存储过程的“异常处理”

Q:何为异常? A:程序在执行过程中有可能出错,运行时错误叫做异常。 默认情况下,当存储过程运行出错时,过程会立即终止,并打印系统错误消息。 实验环境: mysql> use TENNISReading tab...

zsdnr
2017/07/21
0
0
如何处理Express异常

译者按:根据墨菲定律:“有可能出错的事情,就会出错”。那么,既然代码必然会出错,我们就应该处理好异常。 原文: How to handle errors in Express 译者:Fundebug 为了保证可读性,本文采...

2017/12/26
0
0

没有更多内容

加载失败,请刷新页面

加载更多

分布式架构 实现分布式锁的常见方式

一、我们为什么需要分布式锁? 在单机时代,虽然不需要分布式锁,但也面临过类似的问题,只不过在单机的情况下,如果有多个线程要同时访问某个共享资源的时候,我们可以采用线程间加锁的机制...

太猪-YJ
42分钟前
3
0
GitLab Docker 安装记录

安装环境 环境Centos7.4 64 1.拉取镜像文件 docker pull gitlab/gitlab-ce:latest 2.docker 安装 git.zddts.com 为访问域名或换成可以访问的IP docker run -d --hostname git.***.com -p ......

侠者圣
今天
0
0
部署kubernates dashboard

参考官方文档: https://github.com/kubernetes/dashboard 直接部署官方默认的dashboard: kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v1.10.1/src/deploy/r......

猫海豚
今天
0
0
Docker中Redis的安装

一、下载镜像 docker pull redis 二、创建外挂目录及配置 mkdir /opt/docker/redismkdir /opt/docker/redis/confmkdir /opt/docker/redis/data 三、安装 docker run -d --name compose_r......

闊苡訆涐囍醣
今天
0
0
JNI内存泄露处理方法汇总

在c++中new的对象,如果不返回java,必须用release掉,否则内存泄露。包括NewStringUTF,NewObject。如果返回java不必release,java会自己回收。   jstring jstr = env->NewStringUTF((*p)....

shzwork
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部