【Java】例外処理(Try-Catch、throw、throws、finally)について解説

Javaコードを実行すると、さまざまな例外が発生する可能性があります。
ネットワーク接続の問題、ユーザーからかと言っての不適切な入力、プログラム内に存在しないファイルを開くなど
いくつかの理由で発生する可能性があります。
例外は、プログラム、すなわち実行中に発生した「不要なまたは予期しないイベント」であり
実行時に、そのプログラムの指示の通常の流れを中断させます。
今回は、プログラムの実装中に例外が発生した場合の例外処理について解説していきます。

try-catch文の書き方

宣言の仕方

Try-Catch文の構文は次のように宣言します。

try:tryブロックには、例外が発生する可能性のあるステートメントのセットが含まれています。
catch:Catchブロックは、tryブロックの不確実な状態を処理するために使用されます。
tryブロックの後には常にcatchブロックが続きます。
catchブロックは、関連するtryブロックで発生する例外を処理します。

try-CatchにはtryとCatchだけでなく他にもキーワードが存在します。
throw:Throwキーワードは、tryブロックからcatchブロックに制御を移すために使用されます。
throws:Throwsキーワードは、try&catchブロックなしの例外処理に使用されます。
メソッドが呼び出し元にスローできる例外を指定し、それ自体は処理しません。
finally:catchブロックの後に実行されます。
複数のcatchブロックがある場合、基本的にはいくつかの一般的なコードを配置するために使用します。
言葉だけではわかりにくいと思いますので、ここで例を見てみましょう。

出力結果

Exception in thread “main” java.lang.ArrayIndexOutOfBoundsException: 8
at ファイル名と行数

Numbers[8](配列の9番目)が存在しないため、これはエラーを生成します。

もう一つ例を見てみましょう。次はtry-catchを記載します。
エラーが発生した場合は、try-catchを使用してエラーをキャッチし、
コードを実行して処理します。

出力結果

エラーだよ。

tryブロックで例外が発生した場合、実行の制御は対応するcatchブロックに渡されます。
1つのtryブロックに複数のcatchブロックを関連付けることができます。
一般的な例外ハンドラーのcatchブロックが最後になるように、catchブロックを記載する必要があります。

throw、throws、finallyを使って使ってtry-catchを実装してみる

先ほどtry-catchを実装してみましたので、残りの
throw、throws、finallyをtry-catchでそれぞれ実装してみます。

throw

出力結果

Exception in thread “main” java.lang.IllegalArgumentException: throwされます。
at ファイル名と行数

throws

出力結果

トライ中。
メインでキャッチ。

finally

出力結果

キャッチの例外:ゼロによる除算
最後のブロックです。

Writer

ST

株式会社flyhawkのSTです。フライテックメディア事業部でのメディア運営・ライター業務なども担当。愛機はMac Book AirとThinkPad。好きな言語:swift、JS系(Node.js等)。好きなサーバー:AWS。受託開発やプログラミングスクールの運営をしております。ご気軽にお問い合わせください。

最新の案件情報