纯净、安全、绿色的下载网站

首页|软件分类|下载排行|最新软件|IT学院

当前位置:首页IT学院IT技术

Golang异常处理 Golang中异常处理机制详解

zchanglin   2021-06-08 我要评论
想了解Golang中异常处理机制详解的相关内容吗zchanglin在本文为您仔细讲解Golang异常处理的相关知识和一些Code实例欢迎阅读和指正我们先划重点:golang异常处理最佳实践,go错误处理,golang异常处理下面大家一起来学习吧

前言

通常我们需要编写好的错误处理方式在了避免某些程序员滥用异常于是Go这里直接把异常这一块给砍掉了最终还是通过返回值来判断程序的异常情况毕竟Go可是支持多返回值的语言比如atoi、itoa等函数就不能忽略它的第二个返回值因为第二个返回值代表了转换是否成功!不过Golang还是提供了一些错误处理机制的

Go的错误机制

1、没有异常机制

2、error类型实现了error接口

3、可以通过errors.New来快速创建错误实例

type error interface{
    Error() string
}

error.New("n must be in range[0, 1]")

但是这样做只是给开发者标识Code怎么认识呢?难道去string里判断吗?当然不是可以预定义一些错误:

处理错误最佳实践

1、预定义错误code里判断

2、及早失败避免嵌套

panic与recover

panic用于不可恢复的错误类似于Java的Error
panic退出前会执行defer指定的内容

panic和os.Exit
os.Exit退出时不会调用defer指定的函数
os.Exit退出时不会输出当前调用栈信息

接下来看看recover

在Java中如果你不知道要抛出什么错误于是乎很多人直接来个Catch Throwable作为一个异常无Fack说C++中是直接catch…作为一个异常无Fack说

在Go语言中可以通过defer定义的函数去执行一些错误恢复的行为

很多人容易在defer处理错误时把recover获得的错误对象打印到日志文件中这是一种非常危险的做法一定要当心recover在做的事情因为recover的时候并不去检测到底发生了什么错误而是直接忽略了这个错误那么如果这个时候系统的核心资源消耗完了如果我们强制性的恢复的话系统仍然是不能正常工作的还会导致我们的健康检查程序没办法检查出当前系统的问题因为很多的health check只是检查进程在还是不在因为我们的进程是在的所以会导致僵尸服务进程虽然活着但是无法正常提供服务于是我们可以采用恢复设计模式中的一种叫做Let it Crash health check进程就会帮我们重启这个服务

总结


相关文章

猜您喜欢

  • java HashMap java集合类HashMap源码解析

    想了解java集合类HashMap源码解析的相关内容吗代码学习在本文为您仔细讲解java HashMap的相关知识和一些Code实例欢迎阅读和指正我们先划重点:java,HashMap,java集合下面大家一起来学习吧..
  • C语言扫雷游戏 C语言实现扫雷游戏附注释

    想了解C语言实现扫雷游戏附注释的相关内容吗王嘻嘻-在本文为您仔细讲解C语言扫雷游戏的相关知识和一些Code实例欢迎阅读和指正我们先划重点:C语言,扫雷下面大家一起来学习吧..

网友评论

Copyright 2020 www.fresh-weather.com 【世纪下载站】 版权所有 软件发布

声明:所有软件和文章来自软件开发商或者作者 如有异议 请与本站联系 点此查看联系方式