异常处理代码优化

2020-07-12  本文已影响0人  SecondRocker

异常处理基本就是 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
上一篇 下一篇

猜你喜欢

热点阅读