• Go


    1.在默认情况下,当发生错误后(panic),程序就会出现退出(崩溃);
    2.如果我们希望,当发生错误后,可以捕获到错误,并进行处理,保证程序可以继续执行,还可以在捕获到错误后,给管理员一个提示(邮件,短信...);
     
    Go语言追求简洁优雅,所以,Go语言不支持传统的try...catch...finally 这种处理;
    Go中引入的处理方式为:defer, panic, recover;
    这几个异常的使用场景可以这么简单描述,Go中可以抛出一个panic的异常,然后在defer中通过recover捕获这个异常,然后正常处理。
     
    错误处理的好处:
        进行错误处理后,程序不会轻易挂掉,如果加入预警代码,就可以让程序更加健壮;
        示例:
            // 错误处理机制
            func errTest() {     
                // 加defer 来处理错误 + 匿名函数     
                defer func () {         
                    err := recover() // 用来捕获错误         
                    if err != nil { // 有错误处理             
                        fmt.Println("err===", err)             // err=== runtime error: integer divide by zero
                        // 可以加上错误报警机制             
                        fmt.Println("错误捕获到了发邮件给admin.@kuais.com")         
                    }     
                }()     
                num1 := 10     
                num2 := 0     
                res := num1 / num2      
                fmt.Println("res==",res) 
            }
     
    自定义错误:
        Go程序中,也支持自定义错误,使用errors.New 和 panic 内置函数;
        1.erros.New("错误说明")  会返回一个error类型的值,表示一个错误
        2.panic内置函数,接受一个interface{}类型的值(也就是任何值了)作为参数,可以接受error类型的变量,输出错误信息,并退出程序;
        示例:
            // 自定义错误测试
            // 一个读取文件名的函数 
            func readConf(filename string) (err error){     
                    if filename == "config.ini"{         
                            return nil     
                    }else{         // 返回一个自定义错误         
                            return errors.New("读取文件名错误...")     
                    } 
            } 
            // 测试自定义错误函数 
            func selfErrortest(name string){     
                    err := readConf(name)     
                    if err != nil {         // 如果 读取文件发生错误,就会输出这个错误,并终止程序         
                            panic(err)     
                    }     
                    fmt.Println("selfErrortest()继续执行...") 
            }
            
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
  • 相关阅读:
    台式机安装无线网卡建立共享操作
    Mean shift
    拉格朗日乘子法
    凸集和凸函数
    图像插值法
    高斯平滑
    gamma校正
    SIFT feature
    VS2013+Win10+opencv3.0配置(包括opencv2.4.10版本)
    caffe添加自己编写的Python层
  • 原文地址:https://www.cnblogs.com/guo-s/p/13963134.html
Copyright © 2020-2023  润新知