ゼロ除算
次のようなプログラムはエラーになります。クラスを作成して試してみましょう。
void start() { JOptionPane.showMessageDialog(null, 1 / 0); }
上記の命令を処理すると、メッセージダイアログは表示されずに、Eclipseの「コンソール」というタブに次のようなメッセージが表示されます (表示されない場合は、メニューバーの「ウィンドウ」から「ビューを表示」「コンソール」と選択すると表示されると思います)。
at j1.lesson02.DivByZeroInt.start(DivByZeroInt.java:20)
at j1.lesson02.DivByZeroInt.main(DivByZeroInt.java:16)
メッセージの細かい点は多少異なるかもしれませんが、だいたい上記のようになっていると思います。まず、1行目で注目すべきは「/ by zero」という個所です。最初のスラッシュはJavaの割り算の演算子で、by zeroということで「ゼロで割ろうとした」ことを表しています。その手前の「…ArithmeticException」は「算術例外」という意味で、数値計算に関する失敗であることを表しています。
つまり、このプログラムは整数をゼロで割ろうとしてエラーになっていることが分かります。エラーが発生するとプログラムの実行はその時点で打ち切られ、代わりにエラーメッセージを表示します。そのため、このプログラムを実行しても、メッセージダイアログは表示されません。
なお、残りの2行はこのエラーが発生した位置を表しています。「at <パッケージ名>.<クラス名>.start(<クラス名>.java:<行番号>)」という形式で書かれているので、このようなエラーメッセージを見かけたら、該当する行を調べてみましょう。今回の例では、「DivByZeroInt」というクラスを作成して、20行目は「JOptionPane.showMessageDialog(null, 1 / 0)」となっていました。
なお、実数をゼロで割ろうとした場合には先ほどと異なる動きをします (エラーにはなりません)。次のようにプログラムを書き換えて、再度を実行してみてください。
void start() { JOptionPane.showMessageDialog(null, 1.0 / 0.0); }
その他、「-1.0 / 0.0」や「0.0 / 0.0」としてもプログラムはエラーになりません。どのような表示になるか考え、実際に試してみてください。