GO——recover

这篇具有很好参考价值的文章主要介绍了GO——recover。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

定义
  • panic
    • 改变程序控制流
    • 立即停止当前函数剩余代码,调用defer
      • 只会执行当前协程的defer
  • recover
    • 可以终止panic造成的程序崩溃
    • 只能在defer中发挥作用
package main

import (
	"fmt"
	"time"
)

func main() {
	defer func() {
		fmt.Println("main——不是panic的协程的defer")
	}()
	go func() {
		defer func() {
			fmt.Println("panic协程——defer——执行recover")
			if err := recover(); err != nil{
				fmt.Println("panic协程——recover协程拉起:",err)
			}
		}()
		defer func() {
			fmt.Println("panic协程——defer——什么都不做")
		}()
		a := 0
		fmt.Println(23/a)
		//panic("go die")

		fmt.Println("panic协程——after go die, can i print")
		//panic之后不回调用
		defer func() {
			fmt.Println("panic协程——defer——panic发生后面定义")
		}()
	}()

	//没啥作用
	if err := recover(); err != nil{
		fmt.Println("main——非panic协程拉起")
	}

	fmt.Println("main——panic after(跑的比较快)")
	time.Sleep(time.Second * 3)
	fmt.Println("main——panic after time")
}

输出文章来源地址https://www.toymoban.com/news/detail-822715.html

main——panic after(跑的比较快)
panic协程——defer——什么都不做
panic协程——defer——执行recover
panic协程——recover协程拉起: runtime error: integer divide by zero
main——panic after time
main——不是panic的协程的defer

到了这里,关于GO——recover的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • GO——recover

    定义 panic 改变程序控制流 立即停止当前函数剩余代码,调用defer 只会执行当前协程的defer recover 可以终止panic造成的程序崩溃 只能在defer中发挥作用 输出

    2024年01月25日
    浏览(36)
  • Golang:Go语言结构

    在我们开始学习 Go 编程语言的基础构建模块前,让我们先来了解 Go 语言最简单程序的结构。 Go 语言的基础组成有以下几个部分: 包声明 引入包 函数 变量 语句 表达式 注释 接下来让我们来看下简单的代码,该代码输出了\\\"Hello World!\\\": 让我们来看下以上程序的各个部分: 第一

    2024年02月10日
    浏览(59)
  • golang实现webgis后端开发

    目录 前言 二、实现步骤 1.postgis数据库和model的绑定 2.将pg库中的要素转换为geojson (1)几何定义 (2)将wkb解析为几何类型 (3)定义geojson类型 (4)数据转换 (5)数据返回  2.前端传入的geojson储存到数据库 3、其他功能实现 总结         停更了接近一个月都在研究一门新语言gola

    2024年02月08日
    浏览(50)
  • Go中Panic and Recover

    什么是Panic? 在 Go 程序中处理异常情况的惯用方法是使用errors.。errors足以应对程序中出现的大多数异常情况。 **但有些情况下,程序在出现异常情况后无法继续执行。在这种情况下,我们使用 panic 提前终止程序。当函数遇到恐慌时,其执行将停止,所有延迟的函数都会被执

    2024年02月06日
    浏览(43)
  • Go异常处理机制panic和recover

    使用panic抛出异常后, 将立即停止当前函数的执行并运行所有被defer的函数,然后将panic抛向上一层,直至程序crash。但是也可以使用被defer的recover函数来捕获异常阻止程序的崩溃,recover只有被defer后才是有意义的。 结果: 使用recover()捕获异常: 结果为: 如果有两个recover,则捕获异

    2024年02月13日
    浏览(33)
  • 【GoLang】MAC安装Go语言环境

    小试牛刀 首先安装VScode软件 或者pycharm mac安装brew软件  brew install go 报了一个错误 不提供这个支持  重新brew install go 之后又重新brew reinstall go 使用go version 可以看到go 的版本 使用go env  可以看到go安装后的配置 配置一个环境变量 vim ~/.zshrc,  

    2024年02月15日
    浏览(60)
  • Go语言(Golang)数据库编程

    要想连接到 SQL 数据库,首先需要加载目标数据库的驱动,驱动里面包含着于该数据库交互的逻辑。 sql.Open() 数据库驱动的名称 数据源名称 得到一个指向 sql.DB 这个 struct 的指针 sql.DB 是用来操作数据库的,它代表了0个或者多个底层连接的池,这些连接由sql 包来维护,sql 包会

    2024年02月03日
    浏览(93)
  • 【Golang】VScode配置Go语言环境

    安装VScode请参考我的上一篇博客:VScode安装_㫪548的博客-CSDN博客 接下来我们直接进入正题: Go语言(又称Golang)是一种开源的编程语言,由Google开发并于2009年首次发布。Go语言具有简洁、高效、可靠和易于阅读的特点,被设计用于解决大型项目的开发需求。它结合了静态类型

    2024年02月03日
    浏览(66)
  • 【Golang】Golang进阶系列教程--Go 语言 map 如何顺序读取?

    Go 语言中的 map 是一种非常强大的数据结构,它允许我们快速地存储和检索键值对。 然而,当我们遍历 map 时,会有一个有趣的现象,那就是输出的键值对顺序是不确定的。 先看一段代码示例: 当我们多执行几次这段代码时,就会发现,输出的顺序是不同的。 首先,Go 语言

    2024年02月14日
    浏览(69)
  • 【Golang】Golang进阶系列教程--Go 语言数组和切片的区别

    在 Go 语言中,数组和切片看起来很像,但其实它们又有很多的不同之处,这篇文章就来说说它们到底有哪些不同。 数组和切片是两个常用的数据结构。它们都可以用于存储一组相同类型的元素,但在底层实现和使用方式上存在一些重要的区别。 Go 中数组的长度是不可改变的

    2024年02月15日
    浏览(61)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包