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

异常处理代码优化

作者: 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
  • 使用护卫方法(较少使用)
    使用状态替代异常,根据状态码统一处理。需要使用子进程处理可抛异常逻辑,根据子进程返回码判断状态

相关文章

  • 异常处理代码优化

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

  • SpringBoot之自定义异常处理

    简介 SpringBoot项目进行全局异常的处理是非常有必要的,不仅处理异常方便,而且可以优化代码,是针对我们系统...

  • 4抛出异常

    一旦程序检测到异常,它必须将异常传播到处理它的代码。此代码称为异常处理程序。传播异常的整个过程称为 “抛出异常”(...

  • Java异常处理机制

    什么是异常处理机制: 异常处理机制: 让程序发生异常时,按照代码预先设定的异常处理逻辑,针对性地处理异常,让程序尽...

  • 04.如何处理多个异常

    多异常处理 A:对代码进行异常检测,并对检测的异常传递给catch处理。对每种异常信息进行不同的捕获处理。 ※注意...

  • spring mvc全局捕获controller抛出的异常

    相关代码 业务场景 之前公司的代码在每个controller最外层都包裹了异常异常处理的代码,用于处理业务上抛出的...

  • 日常总结:自定义异常

    一、异常处理方式:1.try-catch语句处理异常,try中的代码执行到异常停止,之外的代码依次会继续执行。2....

  • PHP学习笔记 - 进阶篇(10)

    异常处理 抛出一个异常 从PHP5开始,PHP支持异常处理,异常处理是面向对象一个重要特性,PHP代码中的异常通过...

  • Java入门:异常

    Java异常 异常处理机制能让程序在异常发生时,按照代码的预先设定的异常处理逻辑,针对性地处理异常,让程序尽最大可...

  • 6.3-全栈Java笔记:异常处理方法(上)

    异常的处理办法之一 捕获异常 图1异常处理 上面过程详细解析: 1.try块: try语句指定了一段代码,该段代码...

网友评论

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

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