Java FXアプリケーションでタスク例外をキャッチする方法は?

ラフール・シン
import java.util.concurrent.ExecutionException;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;

import javafx.concurrent.Task;


public class T {

    public static void main(String[] args) {

        ExecutorService executorService = Executors.newSingleThreadExecutor();

        Task t = new Task(){

            @Override
            protected Object call() throws Exception {
                System.out.println(1/0);
                return null;
            }

        };

        //My progresss Bar in JavaFX
        //Progressbar.progressProperty().bind(t.progressProperty());

        Future future = executorService.submit(t);

        try {
            future.get();
        } catch (InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (ExecutionException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }  //returns null if the task has finished correctly.

        executorService.shutdown();


}
}

私はこのようなコードを持っています私のコードタスクはSQL例外をスローするオブジェクト呼び出しで内部メソッド呼び出しを持っていますが、送信呼び出しのすぐ上でもエグゼキュータサービスでそれをキャッチすることはできません私はjavafxのプログレスバーを持っていますがそれもそうですfutureを使用すると、メインUIがハングするようにスタックします。将来がなければ、プログレスバーは機能します。

ファビアン

Future.getブロッキング呼び出しです。これがUIがハングする理由です。

Future結果を得るためにを使用しないでください代わりに、TaskonSucceededイベントハンドラーを使用してくださいonFailedイベントハンドラは、例外を取得するために使用することができます。例:

t.setOnSucceeded(evt -> System.out.println(t.getValue()));
t.setOnFailed(evt -> {
    System.err.println("The task failed with the following exception:");
    t.getException().printStackTrace(System.err);
});
executorService.submit(t);

ところで:両方のハンドラーはJavaFXアプリケーションスレッドで実行されるため、UIを安全に変更して、結果/エラーをユーザーに表示できます。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Java Swingアプリケーションアーキテクチャを整理する方法は?

分類Dev

java / jax-rsでアプリケーションエラーをキャッチする方法

分類Dev

このJava FXアプリケーションスレッド例外の原因を調べるにはどうすればよいですか?

分類Dev

Spring Javaアプリケーションで画像ファイルをキャッシュする方法は?

分類Dev

マルチスレッドアプリケーションでjava.lang.ExceptionInInitializerErrorをキャッチするのは適切ですか?

分類Dev

Java Webアプリケーション:キャッシング技術を実装する方法は?

分類Dev

Javaでアプリケーションのredisクラスターをロックする方法

分類Dev

マルチスレッドJavaアプリケーションでキャッシュのディープコピーを作成する

分類Dev

Javaアプリケーションをクラウドインスタンスにゼロから高度なアーキテクチャにデプロイするにはどうすればよいですか?

分類Dev

Java / J2EE Webアプリケーションのキャッシュを維持する方法は?

分類Dev

Javaでマルチタッチアプリケーションを開発する方法

分類Dev

Java Web Startアプリケーションが更新されたときにキャッシュを強制的にクリアすることは可能ですか?

分類Dev

Javaデスクトップアプリケーションでデータを永続化する最良の方法は何ですか。

分類Dev

Java:アプリケーションの終了をキャンセルする方法

分類Dev

コマンドタブアプリケーションスイッチャーからJavaアプリケーションを非表示にし、OSXにドッキングする

分類Dev

アプリケーションアーキテクチャ:シリアル接続をJavaで開いたままにする

分類Dev

Spring MVCの<mvc:resources>タグをJavaアプリケーションコンテキストで使用する方法

分類Dev

Java EEアプリケーションで拡張ヘッダーを使用してリクエストを別の場所にプロキシする方法

分類Dev

アプリケーションがアクティビティでjava.lang.StackOverflowError例外をスローする

分類Dev

Java GUIアプリケーションアーキテクチャ+データベース、MVC

分類Dev

タスクバーまたはクイック起動からJavaアプリケーションを最大化するためのキーボードショートカットを追加するにはどうすればよいですか?

分類Dev

AWSでJavaアプリケーションをホストする方法は?

分類Dev

AWSでJavaアプリケーションをホストする方法は?

分類Dev

業界標準のデスクトップJavaアプリケーションを作成する方法は?

分類Dev

JavaデスクトップアプリケーションでSlackのOAuth2を使用する方法

分類Dev

Java fx 8でボタンアクションを処理する方法は?

分類Dev

Javaコンソールアプリケーションを実行するバッチ/シェルスクリプトを自動的に作成する方法

分類Dev

実行中のアプリケーションのJava呼び出しスタックを取得する方法

分類Dev

Java Webアプリケーションに指紋スキャナーを統合する方法

Related 関連記事

  1. 1

    Java Swingアプリケーションアーキテクチャを整理する方法は?

  2. 2

    java / jax-rsでアプリケーションエラーをキャッチする方法

  3. 3

    このJava FXアプリケーションスレッド例外の原因を調べるにはどうすればよいですか?

  4. 4

    Spring Javaアプリケーションで画像ファイルをキャッシュする方法は?

  5. 5

    マルチスレッドアプリケーションでjava.lang.ExceptionInInitializerErrorをキャッチするのは適切ですか?

  6. 6

    Java Webアプリケーション:キャッシング技術を実装する方法は?

  7. 7

    Javaでアプリケーションのredisクラスターをロックする方法

  8. 8

    マルチスレッドJavaアプリケーションでキャッシュのディープコピーを作成する

  9. 9

    Javaアプリケーションをクラウドインスタンスにゼロから高度なアーキテクチャにデプロイするにはどうすればよいですか?

  10. 10

    Java / J2EE Webアプリケーションのキャッシュを維持する方法は?

  11. 11

    Javaでマルチタッチアプリケーションを開発する方法

  12. 12

    Java Web Startアプリケーションが更新されたときにキャッシュを強制的にクリアすることは可能ですか?

  13. 13

    Javaデスクトップアプリケーションでデータを永続化する最良の方法は何ですか。

  14. 14

    Java:アプリケーションの終了をキャンセルする方法

  15. 15

    コマンドタブアプリケーションスイッチャーからJavaアプリケーションを非表示にし、OSXにドッキングする

  16. 16

    アプリケーションアーキテクチャ:シリアル接続をJavaで開いたままにする

  17. 17

    Spring MVCの<mvc:resources>タグをJavaアプリケーションコンテキストで使用する方法

  18. 18

    Java EEアプリケーションで拡張ヘッダーを使用してリクエストを別の場所にプロキシする方法

  19. 19

    アプリケーションがアクティビティでjava.lang.StackOverflowError例外をスローする

  20. 20

    Java GUIアプリケーションアーキテクチャ+データベース、MVC

  21. 21

    タスクバーまたはクイック起動からJavaアプリケーションを最大化するためのキーボードショートカットを追加するにはどうすればよいですか?

  22. 22

    AWSでJavaアプリケーションをホストする方法は?

  23. 23

    AWSでJavaアプリケーションをホストする方法は?

  24. 24

    業界標準のデスクトップJavaアプリケーションを作成する方法は?

  25. 25

    JavaデスクトップアプリケーションでSlackのOAuth2を使用する方法

  26. 26

    Java fx 8でボタンアクションを処理する方法は?

  27. 27

    Javaコンソールアプリケーションを実行するバッチ/シェルスクリプトを自動的に作成する方法

  28. 28

    実行中のアプリケーションのJava呼び出しスタックを取得する方法

  29. 29

    Java Webアプリケーションに指紋スキャナーを統合する方法

ホットタグ

アーカイブ