广告
返回顶部
首页 > 资讯 > 后端开发 > GO >Golang中异常处理机制详解
  • 856
分享到

Golang中异常处理机制详解

2024-04-02 19:04:59 856人浏览 薄情痞子
摘要

前言 通常我们需要编写好的错误处理方式,在了避免某些程序员滥用异常,于是Go这里直接把异常这一块给砍掉了,最终还是通过返回值来判断程序的异常情况,毕竟Go可是支持多返回值的语言,比如

前言

通常我们需要编写好的错误处理方式,在了避免某些程序员滥用异常,于是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进程就会帮我们重启这个服务

总结

到此这篇关于Golang中异常处理机制的文章就介绍到这了,更多相关Golang异常处理内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

您可能感兴趣的文档:

--结束END--

本文标题: Golang中异常处理机制详解

本文链接: https://www.lsjlt.com/news/127834.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Golang中异常处理机制详解
    前言 通常我们需要编写好的错误处理方式,在了避免某些程序员滥用异常,于是Go这里直接把异常这一块给砍掉了,最终还是通过返回值来判断程序的异常情况,毕竟Go可是支持多返回值的语言,比如...
    99+
    2022-11-12
  • C++11中异常处理机制详解
    目录一、异常的引入二、C++异常的关键字三、异常的抛出与处理规则四、异常缺陷的处理五、自定义异常体系六、异常规范七、异常安全八、异常的优缺点1.优点2.缺点一、异常的引入 传统的C语...
    99+
    2022-11-13
  • 详解SpringMVC中的异常处理机制
    目录开头1.ExceptionHandlerExceptionResolver2. demo开头 试想一下我们一般怎么统一处理异常呢,答:切面。但抛开切面不讲,如果对每一个contr...
    99+
    2022-11-13
  • Java SpringMVC异常处理机制详解
    目录异常处理的思路测试环境准备异常处理两种方式方式一:简单异常处理器方式二:自定义异常处理器总结异常处理的思路 测试环境准备 首先写一个DemoController控制层的类作为测...
    99+
    2022-11-12
  • Java 详解异常的处理机制
    目录1.异常概述与异常体系结构1.1异常概述1.2运行时异常与编译时异常1.3异常体系结构2.常见异常1.ArrayIndexOutOfBoundsException2.NullPo...
    99+
    2022-11-12
  • SpringMVC项目异常处理机制详解
    目录1、异常分类2、自定义项目业务异常3、自定义项目系统异常4、其他异常5、异常代码6、异常处理器7、异常发生1、异常分类 通常分为三类:系统异常(SystemException),...
    99+
    2022-11-13
  • Golang中异常处理机制的示例分析
    小编给大家分享一下Golang中异常处理机制的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!前言通常我们需要编写好的错误处理方式,在了避免某些程序员滥用异...
    99+
    2023-06-15
  • python异常和文件处理机制详解
    本文实例讲述了python异常和文件处理机制。分享给大家供大家参考,具体如下: 1 异常处理 Python的异常用 try except finally 来处理. 并且except后还可以跟 else . ...
    99+
    2022-06-04
    详解 异常 机制
  • Java try-catch-finally异常处理机制详解
    Java中的try-catch-finally异常处理 一、异常处理 异常(Exception):是在运行发生的不正常情况。 原始异常处理: if(条件) {   处理办法1  ...
    99+
    2022-11-12
  • 详解C++中的异常和错误处理机制
    目录什么是异常处理C++中的异常处理机制什么是错误处理C++中的错误处理机制结论什么是异常处理 异常处理是指在程序执行过程中发生异常或错误时,程序能够捕获并处理这些异常或错误的机制。...
    99+
    2023-05-19
    C++异常处理机制 C++异常处理 C++错误处理机制 C++ 错误处理
  • golang异常处理机制有哪些特点
    Golang的异常处理机制有以下特点: 错误处理:Golang鼓励使用错误值来处理异常,而不是传统的异常机制。这意味着函数会返回...
    99+
    2023-10-20
    golang
  • Golang异常处理之优雅地控制和处理异常
    目录panic和recover使用使用示例注意子函数panic主函数recover子协程panic主函数recover使用总结使用panic的几点担心性能性能对比安全panic和re...
    99+
    2023-05-16
    Golang异常处理 Golang异常控制
  • 详解SpringMVC的拦截器与异常处理机制
    目录1.SpringMVC拦截器1.1拦截器(interceptor)的作用1.2拦截器和过滤器的区别1.3拦截器的快速入门1.4多拦截器操作1.5拦截器方法说明2.SpringMV...
    99+
    2022-11-13
  • Java 超详细讲解Spring MVC异常处理机制
    目录异常处理机制流程图异常处理的两种方式简单异常处理器SimpleMappingExceptionResolver自定义异常处理步骤本章小结异常处理机制流程图 系统中异常包括两类: ...
    99+
    2022-11-13
  • Java超详细梳理异常处理机制
    目录一、异常概述与异常体系结构1. 异常概述引入概念2. 分类2.1 Error vs Exception2.2 编译时异常vs运行时异常3. 常见异常3.1 分类3.2 代码演示二...
    99+
    2022-11-13
  • Java 中的异常处理机制详情介绍
    目录介绍 Java 中的异常介绍 Error介绍 ExceptionJava 异常类的结构如何处理函数抛出的异常吞掉 or 抛出受检异常 or 非受检异常处理异常的原则尽量不要捕获通...
    99+
    2022-11-13
  • Java异常处理机制深入理解
    目录1.初识异常2.异常的基本用法异常处理流程3.为什么要使用异常?异常应只用于异常的情况4. 异常的种类 4.1 受查异常解决方案:4.2非受查异常5.如何使用异常避免不...
    99+
    2022-11-13
  • 【JAVA 异常处理机制】
    文章目录 前言1.java异常处理机制2.try-catch3.finally块4.自动关闭特性5.throw关键字6.throws关键字7.throws的重写规则8.异常分类9.异常API10.自定义异常总结: 前言 在Ja...
    99+
    2023-08-23
    java 开发语言 学习 intellij idea
  • Java线程的异常处理机制详情
    目录前言线程的异常处理机制小结线程池场景下的异常处理小结其他前言 启动一个Java程序,本质上是运行某个Java类的main方法。我们写一个死循环程序,跑起来,然后运行jvisual...
    99+
    2022-11-13
  • Golang异常处理之defer,panic,recover的使用详解
    目录延迟是什么延迟函数延迟⽅法延迟参数堆栈的推迟延迟的应⽤panic和recover(宕机和宕机恢复)panic和recover机制示例代码延迟是什么 defer即延迟语句,极个别的...
    99+
    2022-11-13
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作