私はチェックされていない質問とチェックされた質問について読んできましたが、違いと両方をいつ使用するかについて本当に明確なオンラインリソースはありません.
私が理解していることから、どちらも実行時にスローされ、両方ともロジックの予想される範囲外のプログラム状態を表しますが、チェックされた例外は明示的にキャッチされる必要がありますが、チェックされていない例外はキャッチされません。
私の質問は、議論のために、2 つの数値を除算するメソッドがあるとします。
double divide(double numerator, double denominator)
{ return numerator / denominator; }
とどこかで分割が必要な方法
void foo()
{ double a = divide(b, c); }
分母がゼロのケースをチェックする責任は誰にありますか? また、例外をチェックするかチェックしないでください (Java の組み込み除算チェックを無視します)。
したがって、除算メソッドはそのまままたはとして宣言されますか
double divide(double numerator, double denominator) throws DivideByZeroException
{
if(denominator == 0) throw DivideByZeroException
else ...
}
void foo()
{
try{
double a = divide(b, c);
}
catch(DivideByZeroException e)
{}
}
またはチェック例外なしで、そのまま:
double divide(double numerator, double denominator)
{
if(denominator == 0) throw DivideByZeroException
else ...
}
void foo()
{
if(c != 0)
double a = divide(b, c);
}
foo がゼロ除算のチェックを行えるようにしますか?
この問題はもともと、ユーザーが数値を入力し、論理クラスが計算を実行する、私が書いた数学プログラムで発生しました。GUI が不適切な値をすぐにチェックする必要があるのか、それとも内部ロジックが計算中にそれらをキャッチして例外をスローする必要があるのか どうかはわかりませんでした。