【GoLang】GoLang 错误处理 -- 官方推荐方式 示例
最严谨的方式,Always检查error,并做相应的处理
项目结构:

代码:
common.go:
package common import (
"github.com/pkg/errors"
) func Functest(a int64, b int64) (c int64, err error) {
if a < || b < {
return c, errors.New("a or b is invalid")
}
c = a * b
return c, err
}
godep_common.go
package main import (
"fmt"
"os"
"strconv" "github.com/junneyang/letsgo/common"
"github.com/pkg/errors"
) func FuncTestWrap() (c int64, err error) {
a, err := strconv.ParseInt(os.Getenv("VAR_A"), , )
if err != nil {
return c, errors.Wrap(err, "VAR_A ParseInt Fail")
} b, err := strconv.ParseInt(os.Getenv("VAR_B"), , )
if err != nil {
return c, errors.Wrap(err, "VAR_B ParseInt Fail")
} c, err = common.Functest(a, b)
return c, errors.Wrap(err, "FuncTestWrap Fail")
} func main() {
c, err := FuncTestWrap()
fmt.Println(c, err)
}
是的,就是这么蛋疼,
所有的error不能忽略,需要检查,导致代码比较冗长。
这种办法代码非常严谨,也是Golang官方期望的方式。Golang的标准库代码也是这么写的。非常严谨。
但是很多时候其实并不想关注error,只是希望像Java/Python一样有异常直接自动抛出,谁关注异常的时候再进行检查、处理。
尤其是在业务代码的架构层次较多的时候比如常见的Web应用,最佳实践是底层只管抛出异常,到Web层的时候再捕获异常并处理,这样可以大大减少代码量,虽然简单粗暴,但是易于维护。
【GoLang】GoLang 错误处理 -- 官方推荐方式 示例的更多相关文章
- 使用.NET Core中创建Windows服务(一) - 使用官方推荐方式
原文:Creating Windows Services In .NET Core – Part 1 – The "Microsoft" Way 作者:Dotnet Core Tu ...
- 使用.NET Core创建Windows服务(一) - 使用官方推荐方式
原文:使用.NET Core创建Windows服务(一) - 使用官方推荐方式 原文:Creating Windows Services In .NET Core – Part 1 – The &qu ...
- SVN库迁移整理方法----官方推荐方式
以下是subversion官方推荐的备份方式. 关闭所有运行的进程,并确认没有程序在访问存储库(如 httpd.svnserve 或本地用户在直接访问). 备份svn存储库 #压缩备份 svnadmi ...
- CentOS环境Docker安装教程(官方推荐的docker三种方式安装)
CentOS环境Docker安装教程(官方推荐的docker三种方式安装) 一.使用yum方式安装 1.安装依赖包 $ sudo yum install -y yum-utils device-map ...
- 从Qt5开始只剩下setCodecForLocale这一个了,只是影响Qt对toLocal8Bit相关函数的编码方式(在源码里写非英文,官方推荐“\xE4\xBD...”这种)good
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8")); QTextCodec::setCodecFo ...
- React Native 教程:001 - 如何运行官方控件示例 App
原文发表于我的技术博客 本文主要讲解了如何运行 React Native 官方控件示例 App,包含了一些 React Native 的基础知识以及相关环境的配置. 原文发表于我的技术博客 React ...
- spring 依赖注入总结--为什么官方推荐构造器注入
一 公司小伙伴使用了构造器注入,说是spring的官方推荐.但是,我问了三个问题,他都答不出来,感觉能写篇博文. 官方为什么推荐构造器注入? 构造器注入和属性注入的区别是啥? 你知道有几种注入方式吗? ...
- [Android Pro] Android 官方推荐 : DialogFragment 创建对话框
转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/37815413 1. 概述 DialogFragment在android 3.0时 ...
- Android ActionBar完全解析,使用官方推荐的最佳导航栏(下) .
转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/25466665 本篇文章主要内容来自于Android Doc,我翻译之后又做了些加工 ...
随机推荐
- Android签名总结
signapk.jar与eclipse export插件默认赋予程序一个DEBUG权限的签名 signapk.jar包含有系统权限(system api, permission),而eclipse e ...
- YII2 Model 类切换数据库连接
配置多数据库: return [ // ... 'components' => [ // ... 'db' => [ 'class' => 'yii\db\Connection', ...
- 大数据架构师NoSQL建模技术
从数据建模的角度对NoSQL家族系统做了比较简单的比较,并简要介绍几种常见建模技术. 1.前言 为了适应大数据应用场景的要求,Hadoop以及NoSQL等与传统企业平台完全不同的新兴架构迅速地崛起.而 ...
- Cannot install NodeJs: /usr/bin/env: node: No such file or directory
安装doxmate时,doxmate地址是:https://github.com/JacksonTian/doxmatenpm install doxmate -g 安装完后把错误:Cannot in ...
- Java UDP 数据报
服务端,创建一个DatagramSocket对象,侦听在某个端口,创建一个DatagramPacket对象接受数据.收到客户端发来的信息后,有原封不动转发到客户端. public class Data ...
- 网站全面采用UTF-8方法
先是概念的理解: Unicode/UCS的压缩形式--UTF8出现了,套用官方网站的首句话『UTF-8 stands for Unicode Transformation Format-8. It i ...
- [译]View components and Inject in ASP.NET MVC 6
原文:http://www.asp.net/vnext/overview/aspnet-vnext/vc 介绍view components view components (VCs) 类似于part ...
- 关于转录组比对STAR软件使用
参考文章:http://weibo.com/p/23041883f77c940102vbkd?sudaref=passport.weibo.com 软件连接:https://github.com/al ...
- 给groupBox添加滚动条
public Form3() { InitializeComponent(); foreach (Control gbox in groupBox1.Controls) { if (gbox is V ...
- telnet: connect to address 127.0.0.1: Connection refused
telnet协议是TCP/IP协议族中的一员,是Internet远程登陆服务的标准协议和主要方式.它为用户提供了在本地计算机上完成远程主机工作的能力.在终端使用者的电脑上使用telnet程序,用它连接 ...