我在Java代码中发现了一个非常奇怪的错误
即使我在程序中强制RuntimeException
,JVM也无法识别它。
这是我写的内容的演示
private static void someMethod(){
//Some Code
if(true)
throw new RuntimeException();
// More Code
}
我添加了if(true)
以防止无法访问的代码消息,仅用于测试。
但我认为真正的问题是我的代码中存在一些未处理的异常,我无法真正记录,因为缺少printStackTrace()
,否则我应该得到一个控制台日志。
我也得到明文:Exception while removing reference.
但它没有System.err
消息,它看起来像System.out
是否还有其他记录异常的方法,查看默认控制台,以及什么可能导致异常未处理?
注意:我使用以下外部库:JNativeHook,JLayer,Apache Commons IO
Full GitHub repo
异常应发生在CsgoSounds.java
第944
行
操作系统:Windows 10,jre版本:1.8.0_60
答案 0 :(得分:0)
检查了异常和未检查的异常(扩展运行时异常的所有内容)。
编译器强制您处理已检查的异常(使用try catch或throws声明)。您不必被迫处理未经检查的异常。但你可以,只需在代码中添加一个try catch,然后就可以在其上调用printstacktrace。
答案 1 :(得分:0)
JNativeHook
阻止了所有控制台输出。我必须先启用该功能。
Logger logger = Logger.getLogger(GlobalScreen.class.getPackage().getName());
logger.setLevel(Level.WARNING);
完成了这项工作。