golang异常panic和恢复recover用法

原创 2012年08月05日 10:06:50

go中可以抛出一个panic的异常,然后在defer中通过recover捕获这个异常,然后正常处理

在一个主进程,多个go程处理逻辑的结构中,这个很重要,如果不用recover捕获panic异常,会导致整个进程出错中断

package main


import "fmt"
func main() {
defer func() {     //必须要先声明defer,否则不能捕获到panic异常
fmt.Println("c")
if err := recover(); err != nil {
fmt.Println(err)    //这里的err其实就是panic传入的内容,55
}
fmt.Println("d")
}()
f()    
}


func f() {
fmt.Println("a")
panic(55)
fmt.Println("b")

fmt.Println("f")
}


go语言之 panic, recover ——如何在go语言中优雅的处理错误

如何在go语言中优雅的处理错误 如何理解go语言中的 panic 和 recover
  • lingyun1981
  • lingyun1981
  • 2016年09月04日 17:36
  • 2654

golang中recover和panic用法

golang中没有try... catch...,所以当golang中遇到panic时,如果不进行recover,便会导致整个程序挂掉,具体例子如下: package main import ...
  • chenbaoke
  • chenbaoke
  • 2014年12月16日 21:03
  • 5104

Go的异常处理 defer, panic, recover<转载>

Go语言追求简洁优雅,所以,Go语言不支持传统的 try…catch…finally 这种异常,因为Go语言的设计者们认为,将异常与控制结构混在一起会很容易使得代码变得混乱。因为开发者很容易滥用异常,...
  • wuwenxiang91322
  • wuwenxiang91322
  • 2013年06月06日 21:23
  • 33264

GO panic和recover的用法

golang中没有try ... catch...这类异常捕获语句,但是提供了panic和recover内建函数,用于抛出异常以及异常的捕获。 1、Panic The usual way to re...
  • wo198711203217
  • wo198711203217
  • 2017年03月25日 11:02
  • 1057

Go语言中使用panic和recover简化错误处理

随着使用golang越来越频繁,发现golang有一个地方非常不方便,就是在错误处理方面。先来看看golang中通常的错误处理方法: 通常的error处理 1 2 3 ...
  • kenkao
  • kenkao
  • 2015年08月22日 11:19
  • 4440

golang panic的捕获

panic发生时, 会导致进程挂掉。为了处理panic, 可以使用recover捕获,然后处理。 下面以下标引用越界问题为例进行说明。 正常情况下,代码中如果出现下标越界,会直接触发panic, ...
  • lanyang123456
  • lanyang123456
  • 2018年01月27日 11:15
  • 45

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

本文实例讲述了GO语言延迟函数defer用法。分享给大家供大家参考。具体分析如下: defer 在声明时不会立即执行,而是在函数 return 后,再按照 FILO (先进后出)的原则依次执行每一个...
  • yangyangye
  • yangyangye
  • 2015年12月30日 17:40
  • 1174

go语言捕获panic异常并转化为error

go语言捕获panic异常并转化为error
  • htyu_0203_39
  • htyu_0203_39
  • 2016年03月27日 09:40
  • 2300

golang捕获panic

golang当中panic的时候如果启动的goroutine比较多,刷的信息满屏都是,在终端工具上因为刷的信息太多,找不到前边的信息,因此很有必要程序自己捕获panic,并且将错误信息输出到文件当中,...
  • qq_33204116
  • qq_33204116
  • 2016年02月28日 21:40
  • 1260

golang中的defer panic recover

大家都知道golang里的panic相当于其他语言里的throw,而recover相当于其他语言里的cacth,可是由于golang的recover机制要求必须在defer的函数里才能执行catch ...
  • HopingWhite
  • HopingWhite
  • 2013年04月18日 10:22
  • 3669
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:golang异常panic和恢复recover用法
举报原因:
原因补充:

(最多只允许输入30个字)