java8標準ライブラリのクラスは手段「おそらく例外」というjava.util.Optionalは「nullの可能性がある」という意味と同じようにありますか?

Jaceyスクワイアーズ:

私はと言うと呼ばれるクラスを持っているCalculationOutcomeFileHashOutcome彼らのコンストラクタは持っている(ActualResult, Throwable)引数を、との連鎖の最後にCompletionStage私が持っているのhandle(XxxOutcome::new)

私が発言権を書くことができればそれは意図をより明確にし、いくつかの決まり文句を救うかもしれませんPossiblyWithError<FileHash>

編集:コード例を求めて人々...

class FileHashOutcome {
  private final String hash;
  private final Throwable throwable;
  FileHashOutcome(String hash, Throwable throwable){
    // Usual assignments
  }
}

CompletionStage<FileHashOutcome> future =
   SomeExternalLibrary.calculateHash(file) 
   // ...It's a CompletionStage<String> at this stage...
   .handle(FileHashOutcome::new);

// Then I pass `future` to a service that 
// will execute it and pass back the result asynchronously

具体的には、アッカの俳優の中だ、と私はへのインフラストラクチャを求めているパイプメッセージとして俳優に結果バックを。

編集:提案CompletableFutureの仕事をするかもしれません...はい、良い点、それが表現する必要が正確に何を表しています。そして、それはその後java8の将来にそれを包むあなた自身の準備ができてラフアンド未来を実装するコードのにおいのビットです。

あなたが未来の「エンベロープ」へのアクセス権を持っているかどうかに応じてジャンプするためにいくつかのフープがあります。あなたが中にいる場合はthenApply、あなたしている「内部」エンベロープと、あなたはそれを知りません。そして、アッカ・インフラストラクチャは、エンベロープを「捨て」と結果だけを返す(と私はキャッチとの終わりに、その例外をラップしたかった主な理由の一つである例外で、あった場合、それは何も返しませんCompletionStageチェーン)。私はCompletionStageを作成したので、インフラストラクチャは、それが完了したことを私につつかれるまでもちろん、私は、メンバ変数にその上に保持することができます。

スティーブ:

@marstranごとに、このクラスの一般的な名称であるトライ

Scalaはその標準ライブラリで、このようなAクラスがあります。https://www.scala-lang.org/api/2.9.3/scala/util/Try.html

同じことが、Javaで行うことができますが、それは標準ライブラリの一部ではありません。https://dzone.com/articles/why-try-better-exception-handling-in-java-with-try

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=99038&siteId=1