错误和异常是两个不同的概念

错误一般是导致代码直接运行不过

异常:一般指对函数逻辑有影响

如下代码:

package mainimport ("fmt"
)func div(a, b int) (int, error) {if b == 0 {panic("被除数不能为0")}return a / b, nil
}func main() {//错误是遇到可能出现的情况,这些情况会导致你的代码出现问题,参数检查,数据库访问不了//data := 12//strconv.Itoa(data) //go认为这个Itoa的函数不可能出错 内部代码出错这个时候应该抛出异常//i, err := strconv.Atoi("12") //Atoi认为这个函数会出现一些预知的错误情况//if err != nil {// //错误//}defer func() {err := recover()if err != nil {fmt.Println("遗产被捕获到")}}()a := 12b := 0fmt.Println(div(a, b))//异常 go语言中如何抛出异常如何捕捉异常}

关于协程中出现的panic与recove,子协程中无法拿到父协程中的异常信息

package mainimport ("fmt""net/http"
)func main() {http.HandleFunc("/hello", func(w http.ResponseWriter, r *http.Request) {a := 10b := 10fmt.Println(a / b)panic("error")w.Write([]byte("hello world"))})http.ListenAndServe("127.0.0.1:8080", http.Handler(nil))//panic会引起主线程的挂掉,同时会引起其他协程挂掉//为什么panic不会报错呢,在父协程中无法捕获子协程中出现的异常
}

总结:go语言认为错误就要处理。

panic与recover函数相关推荐

  1. Go 学习笔记(19)— 函数(05)[如何触发 panic、触发 panic 延迟执行、panic 和 recover 的关系]

    1. 异常设计思想 Go 语言的错误处理思想及设计包含以下特征: 一个可能造成错误的函数,需要返回值中返回一个错误接口( error ),如果调用是成功的,错误接口将返回 nil ,否则返回错误. 在 ...

  2. recover 没有捕获异常_GO语言异常处理机制panic和recover分析

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

  3. Go 语言编程 — panic 和 recover

    目录 文章目录 目录 defer,panic 和 recover panic recover 通过 panic + recover 来简化错误处理 defer,panic 和 recover Gola ...

  4. 关键字之defer、panic、recover

    一.defer                1. defer延迟调用,完成一些收尾工作.无论函数或方法是否出错,一定会在退出当前函数或者方法之前调用传入的函数(只对函数或方法生效,代码块不生效),常 ...

  5. go 异常捕获处理 panic defer recover

    简言 在其他语言里,宕机往往以异常的形式存在,底层抛出异常,上层逻辑通过 try/catch 机制捕获异常,没有被捕获的严重异常会导致宕机 go语言追求简洁,优雅,Go语言不支持传统的 try-cat ...

  6. 异常处理机制——panic 和 recover

    Golang 有2个内置的函数 panic() 和 recover(),用以报告和捕获运行时发生的程序错误,与 error 不同,panic-recover 一般用在函数内部.一定要注意不要滥用 pa ...

  7. Golang——error处理及panic、recover使用的正确姿势

    异常就是程序出现了不正常的情况,会导致程序非正常停止,而异常处理就是针对非正常停止的情况,给出异常时的处理方式.语法错误不算异常体系中 error: error是一个接口,作用是返回程序异常的信息,e ...

  8. 在golang中defer、panic与recover的作用

    package mainimport "fmt"func main() {var s strings = "panic"fmt.Printf("a的初 ...

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

    随着使用golang越来越频繁,发现golang有一个地方非常不方便,就是在错误处理方面.先来看看golang中通常的错误处理方法: 通常的error处理 1 2 3 4 5 6 7 8 9 10 1 ...

最新文章

  1. nagios不能 发送飞信报警一例
  2. MyEclipse编码设置,中文乱码解决方法,UTF-8,GBK(转)
  3. Java中的移位操作以及基本数据类型转换成字节数组【收集】
  4. 78. Subsets 子集
  5. php 正则获取html标签,php正则取嵌套html标签
  6. FineReport:任意时刻只允许在一个客户端登陆账号的插件
  7. (216)滤波器介绍
  8. 为并发而生的 ConcurrentHashMap,基于 Java8 分析
  9. 100ml干胶能带上地铁吗_雪板能带上飞机高铁吗?该怎么带滑雪装备前往雪场?...
  10. 使用POI完成 EXCEL的 导出和导入
  11. c#web页面显示弹窗_C# .NET弹出窗口
  12. spring5.0学习笔记4
  13. 英语作文计算机80词九年级,英语作文80词左右初三带翻译
  14. 2019年CVTE凉
  15. css实现点点点效果
  16. MES的转型升级,智能制造呼唤新理念
  17. 菲尔人格测试(测试一下自己的分数看看)
  18. 编译原理拉链回填技术c语言,编译原理笔记1:概述编译相关的基本知识
  19. 2000-2017年全球人口密度数据下载LandScan
  20. .net.3.5sp1_隐藏的宝石-与旧的3.5 SP1帖子不同

热门文章

  1. 使用EL表达式,显示Action中的数据
  2. oracle plsql 无法连接 报 ORA-12560: TNS:protocol adapter error
  3. [转载]CSS 创作指南(Beta)(css规范)
  4. 推荐一个简洁优雅的博客系统,farbox
  5. 转:As3.0中的反射
  6. Python+matplotlib数据可视化鼠标悬停自动标注功能实现
  7. Python批量导入图片生成能治疗颈椎病的HTML5版课件
  8. 为什么python除法结果会有小数点0_为什么Python返回0进行简单的除法计算?
  9. 在python中一个子类只能有一个父类吗_在Python中,子类可以与父类在不同的文件中吗?...
  10. XML/YAML文件的输入输出