当前位置: 首页 > 知识库问答 >
问题:

在SwingWorker中引发异常

解修然
2023-03-14

我正尝试在TransferHandler类的ImportData(..)方法中使用SwingWorker(以支持拖放)。我想显示我拖动的文件的导入进度。然而,它并不起作用。我不明白问题是什么,或者是什么引起的。

private class FileImportTransferHandler extends TransferHandler {

    @Override
    public boolean importData(JComponent comp, final Transferable t) {

        SwingWorker<Void, String> worker = new SwingWorker<Void, String>() {

            @Override
            protected Void doInBackground() throws Exception {
                //When commenting this code it and everything else it doesn't
                DataFlavor[] flavors = t.getTransferDataFlavors(); //<---- throws exception 
                //..more code that doesn't run.
            }

            @Override
            protected void done() {
                super.done();

                try {
                    get();
                } catch (InterruptedException ex) {
                    Logger.getLogger(ImportBeanController.class.getName()).log(Level.SEVERE, null, ex);
                } catch (ExecutionException ex) {
                    Logger.getLogger(ImportBeanController.class.getName()).log(Level.SEVERE, null, ex);
                }
            }
        }
       //Starting worker etc here.
    }       
}

例外情况:

共有1个答案

武峻熙
2023-03-14

>

  • 您没有对SwingWorker以及从DoInBackground()调用的任何内容产生任何影响

    请阅读@trashgod对我关于similair问题的回答

    为了获得更好的帮助,更快地发布SSCE,因为FileIO可能存在另一个问题(您可以在飞到\temp时生成文件),

    我发现了另外两三个问题,可能是Bug,也可能不是,paintimedialy()解决了这些问题

  •  类似资料:
    • 问题内容: 有没有一种优雅的方法来处理块中引发的异常? 例如: 如何避免在/ 在块? 问题答案: 我通常这样做: 别处:

    • 我正在使用Mojang API从Minecraft玩家的用户名返回UUID。此方法在参数(我们想要知道UUID的播放器的用户名)中接受一个字符串。为了使用API的resultat,我使用SimpleJSON库(将JSON结果解析为要返回的字符串)。 我的方法抛出2个检查过的异常:IOExeption和Parse异常,因为我想要。当错误的用户名(因此不存在用户名)时,API返回一个空JSON对象,在

    • Google Guava EventBus吞咽异常并记录它们。 我编写了一个非常简单的应用程序来解释我的方法: 演示 这永远不会来抓块! 所以我添加了一个SubscriberExceptionHandler并覆盖了handleException()。 它允许我在处理程序内部处理异常,但我的要求是将该异常带到我处理它们的顶层。 编辑:我在一些网站上找到了一个旧的解决方案。(这是使用番石榴v18)

    • 你可以使用raise语句 引发 异常。你还得指明错误/异常的名称和伴随异常 触发的 异常对象。你可以引发的错误或异常应该分别是一个Error或Exception类的直接或间接导出类。 如何引发异常 例13.2 如何引发异常 #!/usr/bin/python # Filename: raising.py classShortInputException(Exception):     '''A u

    • 我遵循了android开发者参考文件提供者上的示例代码,但它不起作用。 我已经在清单中的文件提供程序定义中设置了路径,并且引用的文件确实存在于该路径中。 在我的清单中: 在 然后我尝试用下面的代码获取内容uri: 但是我得到了这个错误: 最新消息 从Android的源代码,我可以追捕到目前为止,因为我现在知道这个命令在将失败并返回: 但我不知道为什么。。。

    • 问题内容: 通常,我会遇到必须吞下/ 块中清理代码所引发的异常以防止原始异常被吞咽的情况。 例如: 假设记录任何异常不是方法块范围内的选项,而是由调用and 方法的代码完成。 吞没和方法抛出的异常是一个好主意吗?如果没有,什么是处理上述情况的更好方法,以免吞下异常? 问题答案: 我不喜欢捕捉和抛出异常。 如果你抓住它,做 一些 与它-即使它只是记录例外。 如果您不能执行任何操作,请不要捕获它-在方