【问题标题】:Exceptions - Throw and catch right away例外 - 立即投掷和接住
【发布时间】:2016-03-31 12:50:15
【问题描述】:

抛出异常并直接捕获它只是为了打印错误有意义吗?

if(...){

} else {
   try{
      throw new Exception();
   } catch (Exception e){
      e.printStackTrace();
   }
}

【问题讨论】:

  • 我想这取决于具体情况。请注意,抛出异常的成本很高,如果您只是向用户打印错误消息,简单的System.err.println(...) 可能就足够了。

标签: java exception exception-handling


【解决方案1】:

无需投掷,你可以简单地调用:

new Exception().printStackTrace();

甚至更简单:

Thread.dumpStack();

你也可以从当前线程获取堆栈跟踪作为一个数组:

StackTraceElement[] trace = Thread.currentThread().getStackTrace();

如果您想做一些更详细的事情,例如在运行时检查堆栈(例如,获取调用方法的名称)。

【讨论】:

    【解决方案2】:

    我认为只有当您明确想要将异常发送到带有 LOGGER 的日志文件(到 catch 块中)或以特定方式注册它时,它才可能有用。

    【讨论】:

    • 所以执行 e.printStackTrace() 是有意义的,因为这会将跟踪记录在日志中?
    • 不,这不会在日志中添加跟踪,但您可以使用 Logger.error("Error: ", e) 之类的内容修改您的 catch 块,以便将该异常注册到您的 Logger文件
    猜你喜欢
    • 1970-01-01
    • 2011-03-13
    • 2017-10-12
    • 2011-02-12
    • 2016-05-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-07
    相关资源
    最近更新 更多