Java 控制台未显示运行时异常

Java 控制台未显示运行时异常,java,exception,jvm,Java,Exception,Jvm,我在Java代码中发现了一个非常奇怪的bug 即使我在程序中强制运行时异常,JVM也无法识别它 这里是我所写内容的演示 private static void someMethod(){ //Some Code if(true) throw new RuntimeException(); // More Code } 我添加iftrue是为了防止无法访问的代码消息,只是为了测试。 但我认为真正的问题是,我的代码中存在一些未处理的异常,我无法真正记录这些异常,因

我在Java代码中发现了一个非常奇怪的bug 即使我在程序中强制运行时异常,JVM也无法识别它

这里是我所写内容的演示

private static void someMethod(){
   //Some Code
     if(true)
       throw new RuntimeException();
  // More Code
}
我添加iftrue是为了防止无法访问的代码消息,只是为了测试。 但我认为真正的问题是,我的代码中存在一些未处理的异常,我无法真正记录这些异常,因为printStackTrace缺失,否则我应该获得控制台日志。 在删除引用时,我还得到了纯文本:Exception。 但它没有System.err消息,它看起来就像System.out

除了默认控制台之外,还有其他记录异常的方法吗?是什么导致异常无法处理

注意:我使用以下外部库:JNativeHook、JLayer、apachecommons IO

异常应该出现在CsgoSounds.java的第944行


OS:Windows 10,jre版本:1.8.0_60

存在已检查的异常和未检查的异常—扩展运行时异常的所有内容

编译器强制您使用try-catch或throws声明处理已检查的异常。您不会被迫处理未检查的异常。但是您可以,只需在代码周围添加一个try-catch,然后就可以对其调用printstacktrace。

JNativeHook阻塞了所有控制台输出。我必须先启用该功能

Logger logger = Logger.getLogger(GlobalScreen.class.getPackage().getName());
                logger.setLevel(Level.WARNING);

完成了任务。

有很多选择。控制台、日志库……是的,但问题是我有一个以前的异常,它似乎未处理,因此我认为控制台日志记录不起作用。您希望在哪里查看该异常?或者更具体地说:在哪个“控制台”上?您是否正在运行eclipse/intelli/任何其他IDE,或者正在跟踪命令行?@Einstein,我想真正的问题在于未处理的异常。这不能通过任何类型的日志处理。相反,尝试通过命令行启动应用程序,以获取未处理的应用程序的堆栈跟踪exception@bully我在Eclipse上编译,还使用Eclipse控制台进行日志记录。windows控制台将打印相同的输出,因为JVM在发生运行时异常时调用System.err Stream。您真的认为在try-catch中包装几千行代码会有效吗?我一直认为Eclipse会提醒我检查过的异常,否则代码将无法编译。另外,如果JVM不再响应运行时异常,这似乎不会使JVM崩溃。您可能设置了什么日志级别?您是否有涉及JNativeHook的堆栈跟踪?默认情况下,不应阻止控制台输出。听起来你好像在为本机事件回调抛出运行时异常?