panic发生时, 会导致进程挂掉。为了处理panic, 可以使用recover捕获,然后处理。

下面以下标引用越界问题为例进行说明。

正常情况下,代码中如果出现下标越界,会直接触发panic, 导致进程挂掉。

例如下面的例子:

package main

import (
"fmt" ) func main() {
fmt.Println("start...") count := []int{}
fmt.Println(count[1]) fmt.Println("1...") }

output:

start...

panic: runtime error: index out of range

goroutine 1 [running]:

main.main()

D:/work/go_exercise/t.go:29 +0xd4

recover的使用

进程crash后,无法再提供服务,必须设法避免。

Go语言中提供recover可以用于捕获panic。

当对某些代码质量问题存在疑问时,可使用recover进行异常处理。

package main

import (
"fmt" ) func main() {
defer func(){ if r := recover(); r != nil {
fmt.Println("recover...:", r)
}
}() fmt.Println("start...") count := []int{}
fmt.Println(count[1]) fmt.Println("1...") }

output:

start...

recover...: runtime error: index out of range

使用recover后 ,虽然出现越界问题,但程序仍能正常结束。

最新文章

  1. H5程序员如何利用cordova开发跨平台应用
  2. [BZOJ1127][POI2008] KUP子矩阵
  3. laravel5.2,注册服务提供者时无法生效
  4. Eclipse快捷键
  5. 本机搭建zookeeper集群
  6. 区间DP HDU 2476
  7. Reverse反转算法+斐波那契数列递归+Reverse反转单链表算法--C++实现
  8. 重载VerifyRenderingInServerForm
  9. js深入研究之类定义与使用
  10. C++如何将一个整数输出为小数
  11. Ext JS学习第六天 Ext_window组件(三)
  12. [Warning] Aborted connection 11203 to db: 'ide' user: 'nuc' host: 'prd01.mb.com' (Got an error writi
  13. 解决CentOS 7中php-fpm进程数过多导致服务器内存资源消耗较大的问题
  14. QLabel播放gif
  15. Python 天气查询到实现语音播放
  16. idea 设置console 无1024限制,复制到Excel分隔符\t
  17. python将对象名的字符串类型,转化为相应对象的操作方法
  18. Andorid开发(二十二)——获取上下文getApplicationContext()、Activity.this、 getBaseContext
  19. tensorboard遇到的坑
  20. Windows Application Data拒绝访问打开方法?

热门文章

  1. HTML5绘制几何图形
  2. WEB-ERROR-PAGE
  3. Android开发——1轻松战胜开发环境
  4. python 安装包查看
  5. 关于DIY操作系统的断更道歉
  6. anu - react
  7. apache的<directory> 语句以及属性的含义
  8. kbmMW TkbmMWHashSHA256与Delphi 10.2 THashSHA2算出相同的结果
  9. P2S、P2P、P2SP之对比
  10. SWIFT解析天气JSON格式