アルゴリズムとデータ構造演習(7月1日) 例外処理 2019/5/8
異常事態の発生!? そういうことは考えない。 最悪 Que sera, sera! とりあえずプログラム終了。 使えない… そういうことは考えない。 最悪 Que sera, sera! とりあえずプログラム終了。 使えない… 例外処理で処理する。 ベスト ファイルを閉じる。 デバイスを開放する。などなど… 2019/5/8
例外処理の方法 try { 異常事態が起きそうなコードを書く。 } catch (ExceptionType1 param1) { } finally { 必ず実行したい処理を書く。 } 2019/5/8
例外(Exception)の型 Exception ClassNotFoundException IllegalAccessException InstantiationException InterruptedException NoSuchFieldException NoSuchMethodException RuntimeException 2019/5/8
例外(RuntimeException)の型 ArrayIndexOutOfBoundsException ArithmeticException ClassCastException NegativeArraySizeException NullPointerException NumberFormatException SecurityException StringIndexOutOfBoundsException 2019/5/8
例外を投げる(かもしれない)関数 public static void aMethod() throw Exception { … throw new Exception(“エラーメッセージ”); } 2019/5/8
例外を投げる(かもしれない)関数 public static void aMethod() throw Exception { … throw anObject; } anObjectは、例外のサブクラスでなければならない 2019/5/8
例外を投げる(かもしれない)関数 public static void aMethod() throw Exceptiontype { … try { } catch (Exceptiontype param) { throw param; 2019/5/8
例外を受け取れる関数 public static void main() { try { exceptionThrownableMethod(); } catch (Exception e) { System.err.println(e.getMessage()+”\n”); exception.printStackTrace(); 呼び出しの履歴を表示する。 2019/5/8
DivideByZeroTestプログラム Jframe ActionListener 多重継承 DivideByZeroTest ArithmeticException 例外クラスのサブクラス DivideByZeroException 2019/5/8