Golang中引入error接口类型作为错误处理的标准模式,如果函数要返回错误,则返回值类型列表中肯定包含error。error处理过程类

似于C语言中的错误码,可逐层返回,直到被处理。

Golang中引入两个内置函数panic和recover来触发和终止异常处理流程,同时引入关键字defer来延迟执行defer后面的函数。

一直等到包含defer语句的函数执行完毕时,延迟函数(defer后的函数)才会被执行,而不管包含defer语句的函数是通过return的正

常结束,还是由于panic导致的异常结束。你可以在一个函数中执行多条defer语句,它们的执行顺序与声明顺序相反。

推荐学习《golang教程》

当程序运行时,如果遇到引用空指针、下标越界或显式调用panic函数等情况,则先触发panic函数的执行,然后调用延迟函数。调用

者继续传递panic,因此该过程一直在调用栈中重复发生:函数停止执行,调用延迟执行函数等。如果一路在延迟函数中没有recover

函数的调用,则会到达该携程的起点,该携程结束,然后终止其他所有携程,包括主携程(类似于C语言中的主线程,该携程ID为

1)。

错误和异常从Golang机制上讲,就是error和panic的区别。很多其他语言也一样,比如C++/Java,没有error但有errno,没有panic

但有throw。

Golang错误和异常是可以互相转换的:

错误转异常,比如程序逻辑上尝试请求某个URL,最多尝试三次,尝试三次的过程中请求失败是错误,尝试完第三次还不成功的话,

失败就被提升为异常了。异常转错误,比如panic触发的异常被recover恢复后,将返回值中error类型的变量进行赋值,以便上层函数

继续走错误处理流程。

更多相关文章

  1. 从go语言闭包谈函数式编程
  2. go语言中函数与方法介绍
  3. go语言结构体组合函数介绍
  4. golang错误抛出的方法
  5. golang判断错误类型的方法
  6. golang怎么自定义错误
  7. go语言中一种常见的错误
  8. golang如何调用函数?
  9. 记一次因为共享变量的犯错误

随机推荐

  1. 当尝试安装节点时,会得到一个“DLL”错误
  2. 如何通过ajax将javascript数组传递给YII
  3. 什么库或模式减少了这个cb到1 cb的样板?
  4. 使用yui将新项添加到组合框中
  5. js获取毫秒值以及转换成年月日时分秒等
  6. 使用“使用中值排序基数法”实现树状结构
  7. JQuery 1.4.4和Datatable 1.7不工作
  8. CSS3转换导致非常奇怪的window.scrollY行
  9. 奇怪的字符显示在XML> ASP.NET> Javascri
  10. S1-Javascript基础知识一[Javascript]