1,.error接口的定义
  1. type error interface{
  2. Error()string
  3. }
2.error的使用
  1. func Foo(param int)(n int,err error){
  2. //函数定义
  3. }
  4. n,err:=Foo(0)
  5. if err!=nil{
  6. //错误处理
  7. }else{
  8. //使用返回值n
  9. }
3.自定义error类型
  • 定义一个承载错误信息的struct
  1. type PathErrorstruct{
  2. op string
  3. path string
  4. Err error
  5. }
  • 定义Error方法
  1. func (e *PathError)Error()string{
  2.     return e.op+" "+e.path+":"+e.Err.Error()
  3. }
defer:相当于C#中的Filnaly,总会被执行,并且他的执行顺序呢是先进后出
  1. func CopyFile(dst, src string){
  2. defer fmt.Println(dst)
  3. defer fmt.Println(src)
  4. fmt.Println("copy")
  5. }

copy

c:\2.txt

c:\oem8.txt

panic:相当于throw,recover:相当于catch

  1. defer func(){//必须要先声明defer,否则不能捕获到panic异常
  2. if err := recover(); err !=nil{
  3. fmt.Println(err)//这里的err其实就是panic传入的内容,55
  4. }
  5. }()
  6. f()
  7. func f(){
  8. fmt.Println("a")
  9. panic(55)
  10. fmt.Println("b")
  11. }
输出为

a

55

这里panic后面的fmt.Println("b")未被执行,所以后面的信息没有b

 

Go错误处理(二)的更多相关文章

  1. Tomcat运行错误示例二

    Tomcat运行错误示例二 当遇到这种错误时,一般是构建路径的问题,按步骤来就好.如图: 点击---->库---->Add Library---->下一步---->选择tomc ...

  2. Android编程容易犯的错误之二

    11.不要太相信工具,比如Eclipse里面的断点遇到多线程什么,经常不起作用/走不到,还有就是如果语句为空的也不会走,这时候别太早下结论断点地方出错了, 所以每个工程都应该有日志的开关,通过查看日志 ...

  3. ios block常见的错误(二)——循环引用

    这篇博文继续block的常见错误——循环引用. 循环引用是很多初学者不能察觉的,其产生的原因,是block中的代码会对对象进行强引用. 读者请阅读示例代码1,并思考示例代码1所创建的对象能否被正常销毁 ...

  4. [Python学习]错误篇二:切换当前工作目录时出错——FileNotFoundError: [WinError 3] 系统找不到指定的路径

    REFERENCE:<Head First Python> ID:我的第二篇[Python学习] BIRTHDAY:2019.7.13 EXPERIENCE_SHARING:解决切换当前工 ...

  5. Spring+dubbo错误(二)

    ERROR [TestContextManager.java:231] Caught exception while allowing TestExecutionListener [org.sprin ...

  6. klee错误汇报二:KLEE的optimize选项的一个困惑

    问题已经提交github:https://github.com/klee/klee/issues/650 在一个对命令行参数进行建模的符号执行过程中,添加optimize选项与不添加optimize选 ...

  7. JavaScript学习笔记(二)——闭包、IIFE、apply、函数与对象

    一.闭包(Closure) 1.1.闭包相关的问题 请在页面中放10个div,每个div中放入字母a-j,当点击每一个div时显示索引号,如第1个div显示0,第10个显示9:方法:找到所有的div, ...

  8. JavaScript学习总结(二)——闭包、IIFE、apply、函数与对象

    一.闭包(Closure) 1.1.闭包相关的问题 请在页面中放10个div,每个div中放入字母a-j,当点击每一个div时显示索引号,如第1个div显示0,第10个显示9:方法:找到所有的div, ...

  9. HTTPS那些事(二)SSL证书(转载)

    原创地址:http://www.guokr.com/post/116169/   从第一部分HTTP工作原理中,我们可以了解到HTTPS核心的一个部分是数据传输之前的握手,握手过程中确定了数据加密的密 ...

  10. 【读书笔记】iOS网络-错误处理的经验法则

    一,在接口契约中处理错误. 二,错误状态可能不正确. 设备模糊地确认操作是崇拜失败的.比如,移动应用发出HTTP请求以在两个账户间转账.请求被银行系统接收并正确地处理:然而,由于网络失败应答却丢失了, ...

随机推荐

  1. ie6幽灵文字及解决办法

    <!-- ie6 幽灵文字示例 --> <div style="width: 400px;"> <div style="float: lef ...

  2. Map与实体之间转换

    package com.thunisoft.maybee.engine.utils; import java.lang.reflect.Field; import java.lang.reflect. ...

  3. webpack2--webpack 4.X 快速创建demo

    准备工作 1.新建文件夹:webpack-demo(下面我们简称该文件夹为根目录),在根目录下面建两个文件夹,分别为src和dist. 1).src文件夹:用来存放我们编写的javascript代码, ...

  4. JQ 获取地址栏参数

    var cat_id = getParamValue("cat_id"); if(cat_id == null){ cat_id = 1; } $("#brand_cat ...

  5. 8大排序算法总结 JS 实现

    //bubble sort ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 fun ...

  6. Ubuntu 地址导航栏修改为显示路径及如何恢复原模式?

    在Ubuntu中,文件位置默认不是和Windows地址栏一样的(位置项),而是显示是路径名称组合(路径栏),这对于文件路径的获得复制很不方便.比如,获得某个文件德 路径,如果是地址栏,直接复制一下就可 ...

  7. Kafka设计解析(二):Kafka High Availability (上)

    转自:http://www.infoq.com/cn/articles/kafka-analysis-part-2/ Kafka在0.8以前的版本中,并不提供High Availablity机制,一旦 ...

  8. js dom 创建table标签和子属性, 以及创建多选框

    代码: <div class="Category"> <span id="Edit_headerTitle">Edit Categori ...

  9. (笔记)Mysql命令update set:修改表中的数据

    update set命令用来修改表中的数据. update set命令格式:update 表名 set 字段=新值,… where 条件; 举例如下:mysql> update MyClass ...

  10. android 8 wifi 信号等级

    wifi信号等级 /frameworks/base/wifi/java/android/net/wifi/wifimanager.java calculateSignalLevel为计算信号等级函数, ...