我怀疑这样的事情是可能的,但是如果没有将调试器附加到java应用程序,是否可以让一些集合填充有关java应用程序中生成的每个异常的信息,无论它是否被捕获?我知道在.NET中,应用程序会生成有关异常的消息,这些异常在此时被称为“第一次异常异常”,随后可能由应用程序处理,也可能不会。我想知道在java中是否有类似的机制可以用来查看有关在运行时生成的所有异常的信息。
只是澄清一下。这与发生异常的上下文无关。这个问题不是关于我在catch块中做了什么,或者是未处理的异常。它是关于知道JVM是否提供了一种机制来查看在运行时生成的每个异常,无论生成什么或上下文。
答案 0 :(得分:6)
为什么不呢,它当然可能!但首先..记录JVM遇到的所有异常都是浪费生命。它在任何意义上都毫无意义,可能会有一些没有任何意义的豁免权。
但如果确实如果你别无选择,你可以调整你的Java来做到这一点。
打破良好编程的每一条规则,我们的生活,我给你这个想法:
将java.lang.Exception
的源代码从JDK源复制到您的项目中。
在 Exception.java 中创建一个方法,如下所示:
private void logException() {
// Your logging routine here.
}
修改java.lang.Exception
以在每个构造函数的末尾调用此方法logException()
。
将新java.lang.Exception
添加到 bootstrap 类路径。
设置您的日志记录级别等,然后运行。
抬起头来,把它呈现给你那怪异的客户,用你的外交技巧,用几句话吓唬他们' 我们可以做到......但是你自己的风险&#39 ;。可能你会说服他不要使用它。