≪Java≫ 実行時例外 代表例 一覧

≪Java≫ 実行時例外 代表例 一覧


■■■ 体系


Object – Throwable – Error → ①
           |
            – Exception → ②


続き

Exception – チェック例外 → ③
      |
      - 非チェック例外 → ④

① (JVMのメモリー不足などで回復不能:致命的な状態)
  ↑ AssertionError 等
② (予定通り実行できない状態が発生:回復可能)
③ (例外の発生源が特定できるので、あらかじめ例外をチェックするコードの記述が必要。記述がないとコンパイルエラーとなる
④ (プログラムエラーによる例外エラー。発生源が限定できないので対処は任意。)

■■■ チェック例外の代表例 一覧


   → 例外発生時の対処を記述しなければならない

■ IOExeption 
(サブクラスに、FileNotFoundException)


   → 入出力時の例外。
     上記③にあたるので、あらかじめ try~chach 文を書いておかないとコンパイルエラーとなる。

 【記述例】
import java.io.FileReader;
import java.io.FileNotFoundException; → ④
import java.io.IOException; → ⑤
※ ↑ ④、⑤を使用する時点で、例外処理が必須
public class Exec {
 public static void main(String[] args) {
  readFile();
 }
 public static void readFile(){
  FileReader in = null;
  try{
   in = new FileReader(“test.exe”);
   int c = in.read();
   System.out.println((char)c);
   if(in!=null) in.close();
  }catch(FileNotFoundException e){
   System.out.println(“ファイルが見つからない”);
  }catch(IOException e){
   System.out.println(“ファイルを読みこめない”);
  }
 }
}

     また、呼び出し先メソッドで throw(強制的に例外は発生させる) 文を使う場合は、throws(例外を無視する)宣言が必要。

 【記述例】
import java.io.FileReader;
import java.io.FileNotFoundException;
import java.io.IOException;

public class Exec {
 public static void main(String[] args) {
  try{
   readFile();
  }catch(FileNotFoundException e){
   System.out.println(“ファイルが見つからない”);
  }catch(IOException e){
   System.out.println(“ファイルを読みこめない”);
  }
 }
 public static void readFile() throws IOException{
  FileReader in = null;
  try{
   in = new FileReader(“test.exe”);
   int c = in.read();
   System.out.println((char)c);
  }finally{
   if(in!=null) in.close();
  }
 }
}

■■■ 非チェック例外の代表例 一覧


   → 例外発生時の対処を書くかは任意

RuntimeException
   |
    – ClassCastException → ①

    – IllegalArgumentException → ②
       |
        – NumberFormatException → ③
   |
    – IllegalStateException → ④
   |
    – IndexOutOfBoundsException → ⑤
       |
        – ArrayIndexOutOfBoundsException → ⑥
   |
    – NullPointerException → ⑦
   |
    – ArithmenticException → ⑧

■ ① ClassCastException
 (キャストの失敗)


  ⇒ 親クラス→サブクラスでオブジェクトの実体が、スーパークラス、または継承関係にないクラスになっている。

 【例1】
public class sample {
 public static void main(String[] args) {
  Food a =new Food();
  Fruit d =(Fruit)a; ⇒ オブジェクトが親クラスの型
 }
}
class Food {}
class Fruit extends Food{}

 【例2】
public class sample{
public static void main(String[] args){
Object o = new Integer(100);
String str = (String) o; ⇒ 継承関係にない

■ ② IllegalArgumentException
 (不正な引用)


  ⇒ 不正な引数や不適切な引数をメソッドに渡した時に発生する。
    (オブジェクトの値がNullの場合等)

■ ③ NumberFormatException
 (数値形式文字列の記述誤り)


  ⇒ 文字列を数値型に変換するときに、文字列の形式が正しくなく発生。

 【例】
  (正) int n = Integer.parseInt(“1.0”);
  (誤) int n = Integer.parseInt(“1,0”); ⇒ コンマ違い
  (誤) int n = Integer.parseInt(“str”); ⇒ 数字ですらない

■ ④ IllegalStateException
 (不正な状態での呼び出し)


  ⇒ 不適切な状態でメソッドを呼び出した時の例外

 【例】
import java.util.Scanner;
public class sample {
 public static void main(String[] args) {
 Scanner s = new Scanner(System.in);
 s.close(); → クローズ
 String str = s.next(); ⇒ 閉じた後に使用している
 }
}

■ ⑤ IndexOutOfBoundsException
 (不正な状態での呼び出し [ index = 索引番号 ] )


  ⇒ 配列や文字列の操作で、範囲を超えてアクセス

 【例】
public class sample {
 public static void main(String[] args) {
  String s= “abc”;
  char c = s.charAt(5); ⇒ 文字列の文字は3つしかない 
 }
}

■ ⑥ ArrayIndexOutOfBoundsException
 (不正な状態での呼び出し [ array = 要素番号 ] )


  ⇒ 配列や文字列の操作で、範囲を超えてアクセス

 【例】
public class sample {
 public static void main(String[] args) {
  int[] n = {1,2,3};
  int m = n[5]; ⇒ 配列は3つしかない
 }
}

■ ⑦ NullPointerException
 (使用するオブジェクトが null )


  ⇒ nullの配列やクラスオブジェクトを参照

 【例】
public class Test7 {
 public static void main(String[] args) {
  String str = null;
  System.out.println(str.equals(“abc”)); ⇒ str の参照先がない
 }
}

■ ⑧ ArithmenticException
 (算術エラー)


  ⇒ 0 で int の値を割る等

 【例】
public class Test8 {
 public static void main(String[] args) {
 int n = 10 / 0;
 }
}



引っ越し前の記事
シェアする
senをフォローする
プレミア商品・お得商品情報局(予約・再販情報も)


タイトルとURLをコピーしました