首页 > 其他分享 >Go err handle

Go err handle

时间:2023-03-08 10:33:36浏览次数:24  
标签:defer handle err fmt Println Go panic

Go 错误处理

代码

//Go 语言中没有try catch这样麻烦的异常捕获方法
//如果需要捕获异常的话需要使用 defer panic recover() 来实现
func main() {
      fmt.Println("c")
   defer func() { // 必须要先声明defer,否则不能捕获到panic异常
      fmt.Println("d")
      if err := recover(); err != nil {
         fmt.Println(err) // 这里的err其实就是panic传入的内容
      }
      fmt.Println("e")
   }()
   f() //开始调用f
   fmt.Println("f") //这里开始下面代码不会再执行
}

func f() {
   fmt.Println("a")
   panic("异常信息")
   fmt.Println("b") //这里开始下面代码不会再执行
}
-------output-------
c
a
d
异常信息
e

总结

一旦出现了错误,将会调用panic系列函数 -> 退出当前gorouting -> defer 调用出栈

标签:defer,handle,err,fmt,Println,Go,panic
From: https://www.cnblogs.com/sqmw/p/17191113.html

相关文章

  • JQuery的ajax函数中error的解析
    error是ajax传入的对象中的函数,表示ajax发送请求后返回的异常信息处理函数。error函数有三个参数:jqXHR、status、errorThrown第一个参数jqXHR是一个XMLHttpRequest对象,该......
  • Terraform 新手村指南,萌新必读!
    基础设施即代码(IaC)是指使用代码和软件开发技术来配置和管理基础设施的实践。IaC背后的逻辑是尽量消除手动配置基础设施和资源的需求,比如服务器、负载均衡以及数据库等。由......
  • jmeter报ERROR o.a.j.JMeter: Uncaught exception: java.lang.NoClassDefFoundError:
    有个项目做性能测试,需监测服务器服务,jmeter成功安装插件jmeterjp@gc-PerfMonMetricsCollector,运行脚本报如下错误:ERRORo.a.j.JMeter:Uncaughtexception:java.lan......
  • python+playwright 学习-22理解Locator 定位机制与元素句柄 ElementHandle
    前言ElementHandle表示页内DOM元素。ElementHandles可以使用page.query_selector()方法创建。如果你能理解ElementHandle和Locator定位机制,那也就明白了selenium......
  • Go语言学习第一天
    packagemainimport"fmt"funcmain(){/*这是我的第一个简单的程序*/fmt.Println("Hello,World!")}第一行代码packagemain定义了包名。你必须在源......
  • 不背锅运维:Terraform管理Kubernetes的初体验
    写在开篇几年前使用过terraform用于管理VMware和OpenStack,并做了一些自动化相关的事情。而到了今天是云原生的时代,最主流、最牛逼的开源容器编排平台莫过于K8S了。就在昨......
  • 一次goroutine 泄漏排查案例
    一次goroutine泄漏排查案例服务监控系列文章服务监控系列视频背景这是一个比较经典的golang协程泄漏案例。背景是这样,今天看到监控大盘数据发现协程的数量监控很奇怪......
  • 记- django通过celery beat results实现定时任务
    1.实验环境python版本:3.7.8django版本:3.2.15celery版本:5.2.7django-celery版本:3.2.1django-celery-beat版本:2.4.0django-celery-results版本:2.4.0django-redis版本......
  • (转)Golang使用系列---- Go Net 协议层
    原文:https://kingjcy.github.io/post/golang/go-net/Golang使用系列----GoNet协议层网络编程是go语言使用的一个核心模块。golang的网络封装使用对于底层socket或者......
  • (转)Golang网络开发系列(二)—— net包
    原文:https://zhuanlan.zhihu.com/p/575280551这篇文章我们将开始学习net包。因为我们大多是从net.Listen开始写一个tcpserver的,这篇文章我们就从上到下去分析,直到遇到int......