私は、成功するとtrueを返し、失敗するとfalseを返すと主張するAPIを使用しています。ただし、失敗した場合は別の例外をスローするとも主張しています。どのようにしてfalseを返し、例外をスローできますか?
例外をスローし、単一の関数呼び出しから値を返すことはできません。
おそらく、エラーがある場合はfalse
を返しますが、入力が無効な場合は例外をスローします。
編集: PaulPRO技術的に例外をスローさせることが可能であることを指摘する(削除された)回答を投稿しました別のスレッドで、現在のスレッドの値を返します。これはあなたが見るべきものではなくても、これは注目に値するものだと思いました。
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;
}
}
例外と値が関数呼び出しから導出されるようにコードを書くことは可能ですが(上記の投稿を参照)、適切なコーディングで実行してはなりません。
このAPIに関するドキュメントへのリンクを見たいです。 APIは明確さを優先する必要があります。例外をスローして値を返すと、返された値を使用しても安全か、それとも無効かという問題が残ります。
Try/catchブロックは、例外を処理する他の方法です。それらは呼び出しメソッドに例外を渡しませんが、開発者が適切と考える方法で内部的に処理します。
デバッグの目的で、例外の場合に結果の値を確認する必要がある場合、ボヘミアンのアイデアはうまく機能します。