如何找到被“忽略”的异常?

Posted

技术标签:

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

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

【问题讨论】:

有一个关于 scala 辩论邮件列表的讨论,Martin Odersky 说:groups.google.com/group/scala-debate/msg/99369ca6c4959894 【参考方案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 异常(或错误)在程序运行时的抛出点,然后继续点击“播放”以查看它们(至少在您感兴趣的执行路径上)

干杯...

【讨论】:

以上是关于如何找到被“忽略”的异常?的主要内容,如果未能解决你的问题,请参考以下文章

jsp学习与提高——JSP 异常处理

忽略ggplot2箱线图中的异常值

Effective JavaScript Item 63 注意异步调用中可能会被忽略的异常

IIS Rewrite 模块中的 URL 重定向异常被忽略

Java基础-异常

PHPUnit-函数依赖-数据提供-异常-忽略-自动生成