【Java開発】第19回 例外処理

Java入門講座

はじめに

皆さん。こんにちは!

DreamHanksの254cmです。

今回は例外処理について説明していきます。

Java記事のまとめはこちらです。

前回の記事は【Java開発】第18回 インターフェースです。

 

例外とエラー

 

プログラムが動作する途中に不測の事態が発生され、実行中のプログラムの影響を受けることにはエ

ラー(error)と例外(exception)の2つがあります。

〇エラー

エラーはJVMで発生される問題として、プログラムで制御することができない問題を意味します。

例えばStackメモリーにオーバーフローが発生されることがあります。

 

〇例外

例外はエラーと似たようなものですが、プログラムで例外発生に対応することが異なります。

代表的なのが指定された経路にファイルが存在しなかった場合に発生されるFileIOExceptionがあり

ます。

 

try/catch/finally

javaでは例外処理のためにtry/catch/finally文を提供しています。

1.try

try/catch/finally文で最初に実行されます。try文のソースコードで発生された

例外はcatchブロックで対応します。

 

2. catch

tryブロックで発生された例外が引数として伝達され、その例外の対応を行います。

 

3. finally

finallyブロックは例外発生有無に関係せず、必ず実行されます。

 

※catchブロックとfinallyブロックは必須ではありません。しかし、try単独で使うことはできないです。

 

try/catch/finallyの書き方

 

上記のソースコードのe1とe2は例外クラスのインスタンスであります。

サンプル

上記のサンプルはtryでBufferedReaderクラスでファイルの内容を読んでいます。

そして、指定した経路でファイルがなかった場合、catchが実行されるように書かれています。

catchの括弧では対応したい例外のクラスのインスタンスを作成します。

 

サンプル

上記のサンプルを見ると二つのcatchが使われています。

上記のtry/catch/finallyはFileNotFoundExceptionクラスで例外の対応ができなかった場合、

Exceptionクラスで対応するように作成されています。

様々な例外が発生する可能性があるソースコードを例外処理する際に、

上記のサンプルのようにcatchを複数使用して種々の例外を対応することができます。

※複数使用ができるものはcatchしかないです。

 

サンプル3

 

上記のようにcatchまたはfinallyを適切に組み合わせて使うこともできます。

 

しかし、tryを単独で使うことはできないし、tryなしにcatch/finallyだけを使をこともできません。

 

try/catch/finallyの実行順序

 

1.tryブロックのソースコードが実行されます。その時、例外が発生されず、finallyブロックがあった場合 、finallyブロックが実行されます。

2.tryブロックで例外が発生されるとcatchハンドラーは次のような順で適切なcatchブロックを探します。

2.1 stackでtryブロックと一番近いcatchブロックから検査します。

2.2 適切なcatchブロックを探せなかった場合、外側のcatchブロックを検査します。

2.3 それでも適切なcatchブロックを探せなかった場合、例外は処理できないです。

3.適切なcatchを探した場合、例外オブジェクトが引数としてcatchに渡されます。

4.すべての例外処理が終わるとfinallyが実行されます。

5.finallyのソースコードが終了されるとtry/catch/finallyが終了されます。

 

終わりに

今回の記事は以上になります。

次回はExceptionクラスを学びましょう。

ご覧いただきありがとうございます。

Java入門講座
スポンサーリンク
dreamhanksをフォローする
スポンサーリンク
DreamHanks Blog

コメント