Go语言学习笔记10--异常捕获与文件操作

1.异常捕获

(0)导言

        程序在运行过程中是有出现错误的可能的,而通常情况下程序执行过程一旦出现错误就会中断。
        go语言中为了提高程序的可执行性,提出了异常捕获的机制。
        异常捕获允许用户通过特殊的写法,当程序运行出现异常时,不去执行错误的代码,
        而是转而执行一句没有问题的替代代码,从而避免程序中断。
        在go语言中提供了四种异常捕获的手段:errors接口panic中断defer延迟调用recover拦截

(1)errors接口捕获错误信息

        在go语言中错误可以分成三大类,分别为【编辑时异常】【编译时异常】【运行时异常】。
            1)编辑时异常:代码编写时的硬语法错误,例如少写逗号或者关键词丢失

                     num int = 100 
                    //丢失var关键字,程序根本不能执行
                    //错误通常为syntax error前缀,后接错误信息

            2)编译时异常:IDE将代码转换为可执行文件时由于逻辑问题导致的错误,例如除数为0

                     var num int = 10/0;
                    //除数为0,但是程序从语法上来讲没错误
                    //错误通常只有单一的错误信息,division by zero

            3)运行时异常:程序在运行后出现的错误,例如数组下标溢出

                    var arr [3]int = [3]int{1,2,3};
                    for i:=0; i<4; i++{
                        fmt.Println(arr[i]);
                    }
                    //虽然程序从语法结构上来讲没有任何错误
                    //而且也不存在例如除数为0,下标是负数这种逻辑上的硬错误
                    //但是程序在执行到i=3的时候就会引发数组下标越界的问题。
                    //其错误通常使用runtime error前缀,后接错误信息

        而go语言提供了一个名为errors的系统包,它专门用来处理当错误发生时的一些问题
        可以通过将errors提供的方法放在可能发生异常问题的地方,来避免程序由于出现异常而中断

            err := errors.New("错误信息");
            eg:
                var arr [3]int = [3]int{1,2,3};
                for i:=0; i<4; i++{
                    if(i>2){
                        err := errors.New("数组下标访问越界了!");
                        fmt.Println(err);
                        break;
                    }
                    fmt.Println(arr[i]);
                }

        ps:其实errors包提供的方法也只是一个提示信息,就和正常的输出语句没什么区别。
               仍旧需要自己编写逻辑支持,而不能说单独一个方法就能规避异常产生了。

(2)panic异常处理

        当程序出现会发生崩溃中断的异常时,系统会自动调用panic函数来对异常信息进行报告。
        与errors不同的是errors一般用来报告一些一般性质的错误,这些错误不一定会引发程序崩溃,
        而panic则是用来报告当程序遇到不可恢复的错误状态时的错误信息,这些错误一定会引发程序崩溃。

        panic(v {}interface);
        eg:
            fmt.Println("hello1")
            panic("hello2")//程序会在此中断,并打印panic:hello2    
            fmt.Println("hello3")

        ps:通常来讲我们不应该使用panic函数来报告一般性质的普通错误

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值