Javaでいう「例外処理」とは、プログラムの実行中にエラーが出た場合に行われる処理のことです。
「例外 = 正常ではない」事象が起きた時には「〇〇という処理を行う」と予め決めておくことができるため、万が一、動作に不具合や異常が起きた場合でも、何らかの対応処理を行えます。
このページでは、Javaの例外処理の意味と具体的な書き方について解説します^^
例外処理の意味
冒頭でもお伝えしたとおり、Javaの「例外処理」とは、プログラムが通常どおりにはいかなかった場合の処理を指します。
「実行の処理中にエラーが出てしまった場合には△△を行う」と設定しておけるため、Java・プログラマー・ユーザー等が余計なトラブルに見舞われるのを最小限に抑えることができます。
例外処理の設定は、任意で自発的に行うパターンと、必ずしておかなければならないパターンがあり、Javaプログラムでは特に、
- 外部ファイルとのやりとり
- データベースとのやりとり
- ネットワークを介した外とのやり取り
以上のように、Javaから見て「外部とのやり取り」が絡んでいる場合には、例外処理を予めプログラムの中に組み込んでおくことが期待されています^^
例外処理の書き方
例外処理 ( 英語名:exception )の基本的な書き方は、以下のとおりです。
try{
//ここに通常の処理内容を書く
} catch (Exception e){
//ここにエラー時の処理内容を書く
}
… とても単純ですよね^^
前半の try の中には「実行したい正常の処理内容」を書いておき、catchの下には「エラーが出た時に実行する処理」を書いておきます。
まずは正常の処理を「try」して、でも、万が一うまく行かなかった場合は、そのエラーをすぐ「catch」する、と理解しておけば覚えやすいかもしれません^^
自発的な例外処理プログラムの書き方
ここでは一つの例として、「計算用のデータをうまく取り込めなくてエラーになっちゃった」場合の例外処理を作ってみましょう。
まずは、割り算が実行できるプログラムを「//」で書き足したコメントを参考にしながら把握しておいていただけるでしょうか?
一応、改めて解説しますと、最初にString型のkazu変数に文字列の「100」を代入して、次にinteger.parsetというメソッドを使い、kazu変数の中身である「100」をInt型に変換したうえで、num変数に代入しています。
最後の13行目ではnum変数に入っている「100」という数字を使って割り算を行い、結果を左下のコンソール画面に出力表示させています。
正常に「 100 ÷ 100 = 1 」と計算ができていますよね。
それでは次に、このプログラムに調整を加えて故意に失敗させてみたいと思います。
これは、型変換の箇所でエラーを起こした事例です。
kazu変数の中身である文字列「オッペケペー」は、そもそも数字に変換できない文字ですから、integer.parsetメソッドを使用してもInt型に変換できません。
結果、割り算の計算は行われず、代わりに下のコンソールでは「Exception(例外)」と表示されており、真ん中には更に「Number Format Exception」、つまり「数値形式の例外」エラーですよ、と教えてくれています。
でも、英語だとちょっとわかりづらいですし、ユーザーにも優しく注意喚起しておきたいな、と この段階で考えたとしましょう。
いよいよ「例外処理」の出番ですw ( 前置きが長い!?…(汗))
前述した例外処理の書き方を思い出して、プログラムに追記してみましょう。
ご覧のとおり、try ~ catch 文を書き加え、エラーが出た時の処理として、「○○は数字に変換不可のため計算できませんでした。」という文言を表示させるように設定しました。
結果、先ほどのわかりにくい英語文ではなく、日本語で対応させたプログラムの完成です。
このように例外処理を通して、エラーが出た時の別プランを用意しておくことができるわけですね。
まとめ
いかがだったでしょうか?
最初に「例外処理」という言葉を見聞きしたときは、「はっ?なにそれ!?」という感じだったかもしれませんが、わかってしまうとなんてことはないですよね^^
この仕組みを使えば、ユーザーにとってもプログラマーにとっても優しいプログラムを提供できます。
例えば、データベースから取得してきた情報が想定外のものだったり、ユーザーが入力してきた値が対応不可だったり、外部から読み込もうとしたファイルが規格外だったり… このような”異常”事態のときにもフォーマルな対応が行えるプログラムを作れるようになります◎
今回も最後までお読みいただきありがとうございました^^