6

我怀疑这样的事情是可能的,但是如果不将调试器附加到 java 应用程序,是否可以在一些集合中填充有关 java 应用程序中生成的每个异常的信息,无论它是否被捕获?我知道在 .NET 中,应用程序会生成有关异常的消息,此时称为“第一次机会异常”,这些异常可能随后由应用程序处理,也可能不处理。我想知道 java 中是否有类似的机制,我可以利用它来查看有关在运行时生成的所有异常的信息。

只是为了澄清。这与发生异常的上下文无关。这个问题与我在 catch 块中所做的事情或未处理的异常无关。它是关于了解 JVM 是否提供了一种机制来查看运行时生成的每个异常,而不管它是由什么生成的,或者是上下文。

4

1 回答 1

8

为什么不呢,当然有可能!但首先.. 记录 JVM 遇到的所有异常是浪费生命。它在任何意义上都毫无意义,可能会抛出几个没有任何意义的异常。

但是,如果您确实别无选择,您可以调整您的 Java 来做到这一点。

打破良好编程的每一条规则,我们为之而活,我给你这个想法:

  1. java.lang.Exception将JDK 源中的源代码复制到您的项目中。

  2. 在Exception.java中创建一个方法,如下所示:

    private void logException() {
        // Your logging routine here.
    }
    
  3. 编辑以在每个构造函数的末尾java.lang.Exception调用此方法。logException()

  4. 将新的添加java.lang.Exception引导类路径。

  5. 设置您的日志记录级别等并运行.

抬起你的头,把这个呈现给你奇怪的客户,使用你的外交技巧并用几句话吓唬他们'我们可以做到......但这是你自己的风险'。您可能会说服他不要使用它。

于 2014-08-22T17:38:36.353 回答