代码之家  ›  专栏  ›  技术社区  ›  Oleksandr Riznyk

避免使用异常作为流控制

  •  -1
  • Oleksandr Riznyk  · 技术社区  · 6 年前

    我有一个声纳违规,听起来像“避免使用异常作为流控制。”

    我想知道根据最佳实践重写这段代码的最佳方法是什么

    try { 
    } catch(SomeCheckedException ex) {
          throw (SomeRuntimeException) ex.getCause();
    }
    
    1 回复  |  直到 6 年前
        1
  •  0
  •   fl0w    6 年前

    这是一种设计的味道,sonar识别出的模式与代码匹配,如果您希望在通常的流中发生某些事情,然后抛出异常而不是处理错误,并提供适当的返回,而不是向调用方抛出另一个异常,则最有可能是这种情况。

    这不是最佳的一个原因是,在预期的错误情况下,异常处理比简单地返回null(例如)要慢得多。另外,您的软件应该提供一个清晰的API,它不应该以异常为中心。

    推荐文章