【问题标题】:How to find exceptions that were "ignored"?如何找到被“忽略”的异常?
【发布时间】:2011-09-12 09:57:03
【问题描述】:

无需在 throws 子句中声明检查异常或在 scala 的 try/catch 块中处理它们是我喜欢的功能。但是当必须处理异常但被忽略时,这可能是一个问题。我正在寻找工具(可能是编译器标志/插件)来查找忽略检查异常的方法。

【问题讨论】:

标签: exception scala exception-handling checked-exceptions


【解决方案1】:

一种选择是在应用程序的非常高级别捕获异常(顶部是main-方法)。

另一种选择是使用UncaughtExceptionHandler(如果您在 JVM 上):

object MyUncaughtExceptionHandler extends Thread.UncaughtExceptionHandler {
  def uncaughtException(thread: Thread, throwable: Throwable) {
    println("Something bad happened!")
  }
}

val t = new Thread(new Runnable {
  override def run() {
    null.toString
  }
});

t.setUncaughtExceptionHandler(MyUncaughtExceptionHandler)
t.start()

【讨论】:

  • 似乎操作正在寻找静态检查,而您提出了两种运行时方法。
  • @ziggystar 没错,在生产中等待不好的事情发生不是一种选择。
【解决方案2】:

AFAIK,没有这样的工具,但是我成功使用的一种技术是简单地在您的 IDE(IntelliJ 或 Eclipse)中为 java.lang.Throwable 安装一个 at-throw-point 断点,这将暂停执行每个 java 异常(或错误)在程序运行时的抛出点,然后继续点击“播放”以查看它们(至少在您感兴趣的执行路径上)

干杯...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-12-07
    • 2021-04-17
    • 1970-01-01
    • 1970-01-01
    • 2020-08-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多