この質問があまりにも愚かか基本的なようであれば、私は事前に謝罪します。しかし、Googleの検索ではこれでどこにでもいらっしゃいませんでした。投げられるべき/投げられるべき例外
コードは単純です:
public class Average3 {
public static void main(String[] args) {
try {
printAverage(100, 0);
} catch (ArithmeticException ae) {
ae.printStackTrace();
System.out.println("Exception handled in " +
"main().");
}
System.out.println("Exit main().");
}
public static void printAverage(int totalSum, int totalNumber) {
try {
int average = computeAverage(totalSum, totalNumber);// (8)
System.out.println("Average = " +
totalSum + "/" + totalNumber + " = " + average);
} catch (IllegalArgumentException iae) {
iae.printStackTrace();
System.out.println("Exception handled in " +
"printAverage().");
}
System.out.println("Exit printAverage().");
}
public static int computeAverage(int sum, int number) {
System.out.println("Computing average.");
return sum/number;
}
}
は出力:ここ
Computing average.
java.lang.ArithmeticException:/by zero
at Average3.computeAverage(Average3.java:30)
at Average3.printAverage(Average3.java:17)
at Average3.main(Average3.java:6)
Exception handled in main().
Exit main().
0による除算がprintAverageによって呼び出されcomputeAverageに起こるので、私は、IllegalArgumentExceptionを期待していました。私の考えでは、tryステートメントはスキップする必要があり、この時点でキャッチに移動してIllegalArgumentExceptionを登録する必要があります。
私は実際に曇りのある理解を持っていますが、何が起こっているのか、そしてなぜそれが正しいのかを知りたいのです。私はこれに私の頭脳をラッキングしてきた。
ありがとうございます。
なぜそれが 'IllegalArgumentException'の' catch 'に移動すべきですか? –
try-catchブロックがあり、tryで文が失敗していると思っていたので、キャッチするように移動する必要があります – user6556673
なぜ 'catch 'を使用すると例外の型があると思いますか?そのタイプは何を表していますか? –