本サイトでは、無料プログラミングスクール「アキバ・テックドリーム・アカデミー」(以下、テクドリ)の講師が、未経験者に向けてプログラミングの基礎を解説する記事を公開しています。
今回の記事テーマは「ArithmeticException」についての解説です。
「ArithmeticException」とは
「ArithmeticException:アリスメティックエクセプション」とは、算術計算中に例外的な状況が発生した場合にスローされる例外です。
例えば、
- 「0」による除算を行った場合
- 数値がデータ型の範囲を超えてしまった場合
などに発生します。
例外とは
例外(Exception)については、下記の記事にて詳しく解説しています。併せてご参照ください。
プログラミングを始めたばかりの方にとって、「例外」という言葉は少し難しく感じるかもしれません。 しかし、例外はプログラムの動作を正しく理解し、扱うために欠かせない重要な概念です。 簡単に言えば、例外とは、プログラムが予期しない事態に[…]
発生例・解消方法
0で除算した場合
値を0で除算した場合、ArithmeticExceptionが発生します。
例外が発生するサンプルコード
class Test {
public static void main(String[] args) {
//コマンドライン引数で受け取った値を数値変換
int firstNum = Integer.parseInt(args[0]);
int secoundNum = Integer.parseInt(args[1]);
//除算して表示
System.out.println(firstNum / secoundNum);
}
}
実行結果
C:\JAVA>java Test 100 10
10
C:\JAVA>java Test 100 0
Exception in thread "main" java.lang.ArithmeticException: / by zero
at Test.main(Test.java:9)
解消例(例外処理を記述する場合)
例外処理を記述します。
class Test {
public static void main(String[] args) {
//コマンドライン引数で受け取った値を数値変換
int firstNum = Integer.parseInt(args[0]);
int secoundNum = Integer.parseInt(args[1]);
try {
//除算して表示
System.out.println(firstNum / secoundNum);
} catch (ArithmeticException e) {
System.out.println("0で除算出来ません");
}
}
}
実行結果
C:\JAVA>java Test 100 10
10
C:\JAVA>java Test 100 0
0で除算出来ません
解消例(分岐処理で回避する場合)
分岐処理を使って、0以外が入力された場合のみ除算します。
class Test {
public static void main(String[] args) {
//コマンドライン引数で受け取った値を数値変換
int firstNum = Integer.parseInt(args[0]);
int secoundNum = Integer.parseInt(args[1]);
if (secoundNum != 0) {
//除算して表示
System.out.println(firstNum / secoundNum);
} else {
System.out.println("0で除算出来ません");
}
}
}
実行結果
C:\JAVA>java Test 100 10
10
C:\JAVA>java Test 100 0
0で除算出来ません
「ArithmeticException」のまとめ
今回は、「ArithmeticException」という例外について解説しました。
「ArithmeticException」は、プログラムの中で算術計算に問題が発生したときにスローされる例外です。
代表的な原因としては「0で割る」といった不正な計算が挙げられます。
この例外が発生した場合は、該当する計算処理において誤りがないかを確認しましょう。
公式「Oracle Help Center」でも詳しく解説されています。併せてご参照ください。
無料のプログラミングスクール「テクドリ」の卒業生のインタビュー動画を、インスタグラムほか公式SNSにて公開中!