web-dev-qa-db-ja.com

値を返し、例外をスローしますか?

私は、成功するとtrueを返し、失敗するとfalseを返すと主張するAPIを使用しています。ただし、失敗した場合は別の例外をスローするとも主張しています。どのようにしてfalseを返し、例外をスローできますか?

22
mark

例外をスローし、単一の関数呼び出しから値を返すことはできません。

おそらく、エラーがある場合はfalseを返しますが、入力が無効な場合は例外をスローします。

編集: PaulPRO技術的に例外をスローさせることが可能であることを指摘する(削除された)回答を投稿しました別のスレッドで、現在のスレッドの値を返します。これはあなたが見るべきものではなくても、これは注目に値するものだと思いました。

28
Jeremy Banks

has a(この場合はブール値)という値の例外をスローできます。

public class ValueException extends Exception {
    final boolean value;

    public ValueException(boolean value, String message) {
        super(message);
        this.value = value;
    }

    public boolean getValue() {
        return value;   
    }
}
22
Bohemian

例外と値が関数呼び出しから導出されるようにコードを書くことは可能ですが(上記の投稿を参照)、適切なコーディングで実行してはなりません。

このAPIに関するドキュメントへのリンクを見たいです。 APIは明確さを優先する必要があります。例外をスローして値を返すと、返された値を使用しても安全か、それとも無効かという問題が残ります。

Try/catchブロックは、例外を処理する他の方法です。それらは呼び出しメソッドに例外を渡しませんが、開発者が適切と考える方法で内部的に処理します。

デバッグの目的で、例外の場合に結果の値を確認する必要がある場合、ボヘミアンのアイデアはうまく機能します。

0
HesNotTheStig