Eclipse/Java在异常时不停止,不显示堆栈跟踪

9nvpjoqh  于 2023-06-05  发布在  Eclipse
关注(0)|答案(1)|浏览(146)

由于某些原因,Eclipse for Java停止显示异常的堆栈跟踪,Eclipse在调试时也不会停止异常。我安装(而不是升级)了最新的Eclipse 2023-03(4.27.0),并引用了工作区和项目,希望能解决这个问题,但Eclipse仍然很高兴地超越了异常。
我为Throwable设置了一个断点(caught和uncaught),还设置了debug选项,以便在未捕获的异常时挂起执行。无论如何,异常是用我的catch语句捕获的,而不会挂起执行,printStackTrace命令没有做任何我可以看到的事情。没有到控制台的输出。showMessageDialog语句可以工作,并在初始化期间显示我的失败消息。
如果我注解掉try/catch,使得异常未被捕获,那么程序似乎立即终止,没有来自我或系统的任何消息。
对这里发生的事情有什么想法吗?
下面是我的tray/catch,异常在initializeEX()语句中的某个地方:

try {
        initializeEX();   // the error is somewhere in here...
    } catch(Exception e) {
        e.printStackTrace();
        msg = "Failure during console initialization.";
        JOptionPane.showMessageDialog(frame, msg, "Cannot load AssetAllocation", JOptionPane.ERROR_MESSAGE);
    }

感谢任何输入。

zwghvu4y

zwghvu4y1#

由于您设法在对话框中获得了异常描述,因此您也可以在那里获得隐藏跟踪。
创建一个ByteArrayOutputStream,然后创建一个PrintWriter。然后将其转化为printException()方法。

try {
  initializeEX();
} catch (Exception x) {
  try (ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
      PrintStream errorOut = new PrintStream(byteArrayOutputStream)) {
    x.printStackTrace(errorOut);
    msg = byteArrayOutputStream.toString();
    // joptionpane
 }
}

至于为什么stask跟踪没有按原样打印,我假设标准错误流在执行过程中发生了变化(System.setError(someStream))。

相关问题