独習Java ・ 8.1 例外処理 ・ 8.2 catch ブロックの検索 12月 5日 小笠原 一恵 例外 プログラムの実行中に発生した問題を通知する ために、実行時に生成されるオブジェクトのこと 原因 ・ 整数を0で除算した ・ ファイルが見つからない ・ 数値の形式が不正である etc. 例外(整数を0で除算) class error1{ 出力結果 public static void main(String args[]){ a(); } static void a(){ b(); } static void b(){ int i=1; int j=0; System.out.println(i/j); } } Exception in thread "main" java.lang.ArithmeticException: / by zero at error1.b(error1.java:9) at error1.a(error1.java:5) at error1.main(error1.java:3) 8.1 例外処理 try{ // tryブロック try ブロック 例外の発生を監視する必要があるコード } catch (ExceptionType1 parm1){ // 例外処理ブロック } ・ ・ catch ブロック 例外オブジェクトの種類がcatchブロックパのラ メータと一致した場合はその処理を実行 一致しなければ次のcatch節へ catch (ExceptionTypeN parmN){ // 例外処理ブロック } finally{ //finallyブロック } finally ブロック Catchブロックの処理が終了したら実行 例外処理 class Divider{ public static void main(String args[]){ try{ int i=Integer.parseInt(args[0]); catch(ArrayIndexOutOfBoundsException e){ System.out.println("ArrayIndexOutOfBoundsExc ption"); } catch(NumberFormatException e){ int j=Integer.parseInt(args[1]); System.out.println(i/j); } System.out.println("NumberFormatException"); } finally{ catch(ArithmeticException e){ System.out.println("Arithmetic Exception"); } System.out.println("Finally block"); } } } 8.2 catch ブロックの検索 例外オブジェクトに対応するcatchブロックがない場合 → 他のtryブロックのcatchブロックが検索される → 既定の例外ハンドラが呼び出されて、例外メッセージが 表示されてプログラムの実行が停止する 宿題 P244の練習問題の1.のプログラムを作り、 catchブロックの検索がどのように行なわれ ているかを理解してください
© Copyright 2024 ExpyDoc