Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在SWT中显示异常_Java_Exception_Swt_Jface - Fatal编程技术网

Java 在SWT中显示异常

Java 在SWT中显示异常,java,exception,swt,jface,Java,Exception,Swt,Jface,在SWT/Jface应用程序中,如何正确地向用户显示异常?我使用log4j记录异常,但我需要向用户显示消息 也许我可以使用与Eclipse中相同的消息框?但我不知道如何使用它 问题是:如果发生了多个异常,我希望在一个唯一的消息框中列出所有异常,这样用户只需单击一次即可关闭该框 提前感谢。您可以像在任何其他GUI框架中一样: 从不向用户显示例外情况 好的,简而言之,如果可能的话,处理应用程序内部的异常。异常不是用户消息的包装。这是一个应用程序内部信号,表示出现问题,应用程序无法正常继续。消息和st

在SWT/Jface应用程序中,如何正确地向用户显示异常?我使用log4j记录异常,但我需要向用户显示消息

也许我可以使用与Eclipse中相同的消息框?但我不知道如何使用它

问题是:如果发生了多个异常,我希望在一个唯一的消息框中列出所有异常,这样用户只需单击一次即可关闭该框


提前感谢。

您可以像在任何其他GUI框架中一样:

从不向用户显示例外情况

好的,简而言之,如果可能的话,处理应用程序内部的异常。异常不是用户消息的包装。这是一个应用程序内部信号,表示出现问题,应用程序无法正常继续。消息和stacktrace应帮助开发人员或管理员发现并解决问题

如果有什么,可怜的用户需要知道(因为他可以更改某些内容,如检查网络连接),创建一条用户可以理解的消息(例外情况不符合条件),并在消息框中显示此消息

将例外情况留给日志文件和知道如何读取它们的人


从另一条评论中,我了解到您的意图:在开发阶段显示更多细节。因此,开发和生产代码需要不同的行为。您希望添加一些调试代码,以便在出现错误时显示更详细的信息

考虑实现一个应用程序范围的服务,该服务接收消息并将其呈现给用户。生产代码的实现只会显示“用户友好”(本地化?)消息,而用于开发目的的实现也会显示调试信息(完整错误消息)


为了实现这一点,您可以定义一个自定义扩展点,并将“调试扩展”添加到单独的捆绑包中的用户消息服务中。因此,如果不安装该捆绑包,用户将无法获得扩展消息。

您可以使用MessageBox

MessageBox messageBox = new MessageBox(shell, SWT.ICON_ERROR); messageBox.setMessage("error message"); int result = messageBox.open(); ... MessageBox MessageBox=新MessageBox(shell,SWT.ICON\u错误); 设置消息(“错误消息”); int result=messageBox.open(); ... 如果发生多个异常,我想在一条唯一的消息中列出所有异常

为什么要向用户显示异常列表?。用户只需要有关错误的信息和一条避免或修复错误的消息


你能发布你想打包的例外情况列表或提供更多信息吗?

我只能支持Andreas_D和yeraycaballero的答案。只有当您向用户显示异常时,用户才会感到困惑

下面是如何使用SWT消息框的另一个示例:

您还可以在官方Eclipse API文档中找到有用的信息:

深入研究代码,给我一个我想要的线索:

org.eclipse.core.runtime.SafeRunner和org.eclipse.jface.util.SafeRunnable类是理解swt/jface如何处理异常的良好起点

可以这样使用:

    SafeRunner.run(new ISafeRunnable() {
      public void run() throws Exception {
           // code that throws exceptions...
      }
    });

在开发过程中,一个带有buton“Show details”(显示详细信息)之类的消息框以及所有异常的列表可以真正帮助和提高生产率。我完全同意你的看法:用户不需要知道问题的技术原因。所以我用我自己的异常包装了根异常。这些异常消息是唯一的,用户经常使用。但如果发生了多个错误,我希望在一个错误消息框中显示它们。