如何让父方法抛出异常?

时间:2014-12-01 02:18:38

标签: java exception runnable

如何让匿名runnable使父方法抛出异常?

public boolean drive2Exit() throws Exception {
    while(true) {
        handler.postDelayed(new Runnable() {
            public void run() {
                try {
                    ...
                catch (Exception e) {
                    //drive2Exit should throw exception
                }
            }
        }, 100);
    }
}

2 个答案:

答案 0 :(得分:1)

我认为你可能是使用Future的最佳服务器:

https://docs.oracle.com/javase/7/docs/api/java/util/concurrent/Future.html

使用它你可以在你的主代码中检查runnable的结果,如果它抛出异常,你将获得异常处理代码检查未来。使用该异常,我认为嵌入的原始异常决定了什么扔在未来之外。

答案 1 :(得分:0)

我不认为你是否能做到这一点。当在子线程中引发异常并且它没有被捕获时,子线程将在没有父母知道的情况下死亡。我能想到的是catch孩子中的Exception并将其置于共享数据结构中,例如在子级和父级之间共享的static变量。如果其子项中存在任何异常,家长会定期轮询此数据结构。 或者,您可以实现Observer设计模式,以便在任何子节点中出现新异常时通知main线程(即共享数据结构已更改。)