`

go语言goroutine的异常捕获(四)

    博客分类:
  • Go
 
阅读更多
package main

import "fmt"
import "time"
/*

goroutine中的异常通过defer+recover捕获

*/

func fn1(){

	for i:=0;i<5;i++{
		time.Sleep(time.Millisecond*10)
		fmt.Println("hello")
	}
}


func test(){
	//捕获异常,匿名自执行函数
	defer func(){
		err:= recover()
		if err!=nil{
			fmt.Println("error:", err)  //error: assignment to entry in nil map
		}
	}()

	var mp1 map[int]string
	mp1[0]="abc"
}


func main() {

	go fn1()
	go test()
	time.Sleep(time.Millisecond*100)  //主线程等待协程执行,推荐使用waitGroup
}

 

分享到:
评论

相关推荐

    Go语言实战.pdf_go语言_Go_go_Go语言实战_

    Go语言,又称Golang,是由Google开发的一种静态类型的、编译型的、并发型的、垃圾回收的编程语言。自2009年发布以来,Go语言因其简洁、高效的语法和强大的并发处理能力,逐渐在云计算、微服务、容器等领域获得了广泛...

    Go语言云动力

    4. **错误处理**:Go语言采用错误值而非异常处理,书中会解释如何正确地捕获和处理错误。 5. **并发编程**:重点讲解goroutine和channel的使用,以及如何编写并发安全的代码。 6. **标准库和第三方库**:介绍Go语言...

    掌握Go语言的异常处理:defer、panic和recover的协同艺术

    ### 掌握Go语言的异常处理:defer、panic和recover的协同艺术 #### 一、Go语言概述 Go,也被称为Golang,是由Google开发的一种开源编程语言。它以其简洁的语法、高效的编译速度、强大的并发支持以及自动内存管理等...

    go语言程序设计

    在面向对象编程的基础上,本书讲解了GO语言的错误处理,包括异常的定义,异常的捕获,异常的处理等。在错误处理的基础上,本书进一步讲解了GO语言的并发编程,包括goroutine的使用,通道的使用,同步锁的使用等。 ...

    Go语言的异常处理:Panic与Recover的妙用

    ### Go 语言的异常处理:Panic 与 Recover 的妙用 #### 一、Go 语言中的异常处理机制概述 Go 语言作为一种简洁高效的编程语言,其设计目标之一是简化异常处理过程,使得开发者能够更加关注业务逻辑而非复杂的错误...

    GO语言异常处理机制panic和recover分析

    本文实例分析了GO语言异常处理机制panic和recover。分享给大家供大家参考。具体如下: Golang 有2个内置的函数 panic() 和 recover(),用以报告和捕获运行时发生的程序错误,与 error 不同,panic-recover 一般用在...

    A goroutine pool for Go.zip

    - 异常处理:更容易捕获和处理goroutine中出现的错误,因为它们都在池中被集中管理。 总结来说,"A goroutine pool for Go"是Go语言中为优化并发执行而设计的一种机制,通过使用goroutine池,我们可以更有效地管理...

    Go语言入门指南大纲及框架建议:轻松掌握Go语言学习秘诀.docx

    - Go 语言,也被称为 Golang,是由 Google 公司于 2007 年启动的一个项目,并于 2009 年对外公开发布。它由 Robert Griesemer、Rob Pike 和 Ken Thompson 这三位著名的计算机科学家共同设计。这三位开发者之前也有...

    一些高质量的学习Go编程语言(Golang)的资源清单.zip

    5. **错误处理**:Go语言采用错误返回方式处理异常,而不是使用异常机制。学会正确地捕获和处理错误是编写可靠代码的必备技巧。 6. **反射(Reflection)**:Go语言提供了强大的反射机制,允许在运行时检查和操作...

    ladon入侵检测系统GO代码实现

    首先,Go语言(又称Golang)是Google开发的一种静态类型、编译型的编程语言,以其简洁的语法、高效的性能以及并发处理能力而被广泛应用在系统工具和服务器程序开发中。ladon系统选择Go语言作为实现基础,主要是看中...

    go语言高级并发模型

    Go语言提供了一种优雅的方式来处理Goroutine的取消,例如通过关闭通道或者使用Context包来传递取消信号。 总之,Go语言通过Goroutines和Channels提供了一种简洁、高效的并发模型。在官方提供的高级并发模型中,我们...

    Go语言学习笔记(自己整理的,超级全面)

    Go语言,又称Golang,是由Google开发的一种静态类型的、编译型的、并发型的、垃圾回收的编程语言。Go语言的设计目标是提高开发效率,简化并发编程,并提供高效的网络和系统级编程能力。 在Go语言的学习中,首先要...

    Go语言学习

    4. **并行性**:Go语言内置了对并发的支持,通过goroutine和channel机制来简化并发编程,使得开发者能够轻松地编写多线程或多进程的应用程序。 5. **类型系统**:Go语言拥有一个强大的类型系统,支持多种数据类型,...

    学习go语言_中文pdf

    Go语言,又称为Golang,是由谷歌在2009年推出的开源编程语言。它的设计初衷是为了应对现代多处理器系统应用程序的编程挑战,并且旨在提供媲美C或C++代码的执行速度,同时保证更高的安全性以及更好的支持并行处理。 ...

    Go语言学习(五) 高质量编程与性能调优实战-青训营笔记

    - **返回错误**:Go语言鼓励通过返回错误值来处理异常情况,而不是抛出异常。 - **错误链**:通过记录错误来源和上下文,便于调试和排查问题。 5. **测试与基准测试** - **go test**:内置的测试框架,支持单元...

    非常好好的go code

    7. **错误处理**:Go语言采用显式错误处理,通过返回错误值来捕获并处理异常,避免了异常处理的复杂性。 8. **包管理与工具链**:Go语言的`go mod`模块化管理使得依赖关系更加清晰,`go build`、`go test`等工具链...

    Go-今日热榜是一个获取各大热门网站热门头条的聚合网站使用Go语言编写多协程异步快速抓取信息

    - **错误处理**:Go语言鼓励显式的错误处理,项目中可能会使用多返回值或错误接口来捕获和处理异常。 - **代码组织**:遵循Go的包管理原则,将相关功能模块化,有助于代码的可读性和维护性。 5. **性能优化** ...

    Go-Golang系列教程(译)

    6. **错误处理**:Go语言采用显式的错误处理机制,通过返回错误值来捕获和处理异常情况。学习者需要学会编写能够正确处理错误的代码。 7. **反射与类型断言**:反射允许程序在运行时检查和修改其自身的结构,而类型...

    开源项目-golang-go.zip

    开源项目-golang-go.zip是一个包含了Go语言开源项目源代码的压缩包。这个项目的重点更新是修复了一个关于“merged: sync: unlocking unlocked mutex instead of panicking throws now”的问题。这个描述暗示了在Go...

Global site tag (gtag.js) - Google Analytics