Loading

详解 golang 中如何自定义异常捕获方法

之前PHP的异常捕获是try catch 来进行操作,golang 当前还没有很好的捕获方式,下面我们自己进行分装一下:

1. 使用常用的 try catch 方式进行分装

    /**
     * @desc  fun 正常的方法 catch 异常处理的方法 注意:传递的都是闭包
     **/
    func try(fun func(),catch func(err interface{})){

        defer func(){
            fmt.Println("<----- start doing ----->")
            if err := recover(); err != nil {
                catch(err)
            }
            fmt.Println("<----- end   done ----->")
        }()

        fun()
    }
    
    
    func main(){
        
        //测试方法
        try(func(){
             fmt.Println("我们正常执行的代码")
             panic("this is try to catch Error")
         },func(err interface{}){
             fmt.Println("捕获异常",err)
         })
         
    }

2. 自定义捕获异常的方法

    /**
     * @desc 自定义捕获异常的方法
     **/
    func throwError(error_info string,error_code int) (int , error){
           msg := errors.New(error_info)
           code := 500;
           if error_code != 0 {
                code = error_code;
           }
           return code,msg;
    }
    
    
    func main(){
        //测试方法
        code,err := throwError("这是自定义的一个异常",0)
        if err != nil {
            fmt.Println(err)
        }else{
            fmt.Println(code)
        }
    }

分装完毕,点个赞呗!

posted @ 2023-02-13 09:54  Carver大脸猫  阅读(32)  评论(0)    收藏  举报