美文网首页
异常处理代码优化

异常处理代码优化

作者: SecondRocker | 来源:发表于2020-07-12 21:15 被阅读0次

    异常处理基本就是 begin/rescue/end的代码块,运用下面三个策略,代码结构就比较清晰。

    • 优先使用顶层异常捕获
    def foo
      # 其他逻辑  
      begin
        # 抛出异常的代码
      rescue
        #异常处理
      end
    end
    
    # 修改为
    def foo
      # 主逻辑
    rescue
      # 异常处理
    end
    
    # 用受检方法封装异常操作
    def filter_through_pipe
      IO.popen(command,'w+') do |process|
        result = begin
          process.write(message)
          process.close_write
          process.read
        rescue Error:EPIPE
          message
        end
      end
    end
    
    #修改为
    
    def check_popen(command, mode, error_policy = -> {raise})
      IO.popen(command,mode) do |process|
        return yield(process)
      end
    rescue Error::EPIPE
      error_policy.call
    end
    
    def filter_through_pipe(command,message)
      checked_popen(command,'w+', -> {message}) do |process|
        process.write(message)
        process.close_write
        process.read
      end
    end
    
    • 使用护卫方法(较少使用)
      使用状态替代异常,根据状态码统一处理。需要使用子进程处理可抛异常逻辑,根据子进程返回码判断状态

    相关文章

      网友评论

          本文标题:异常处理代码优化

          本文链接:https://www.haomeiwen.com/subject/ohpncktx.html