| ページ一覧 | ブログ | twitter |  書式 | 書式(表) |

MyMemoWiki

「SJC-P 例外」の版間の差分

提供: MyMemoWiki
ナビゲーションに移動 検索に移動
(ページの作成:「==SJC-P 例外== =====次のいずれかがスローされる結果になる状況を認識できる。===== *[http://java.sun.com/j2se/1.5.0/ja/docs/ja/api/java/lang/A…」)
 
 
1行目: 1行目:
==SJC-P 例外==
+
==[[SJC-P 例外]]==
 
=====次のいずれかがスローされる結果になる状況を認識できる。=====
 
=====次のいずれかがスローされる結果になる状況を認識できる。=====
 
*[http://java.sun.com/j2se/1.5.0/ja/docs/ja/api/java/lang/ArrayIndexOutOfBoundsException.html ArrayIndexOutOfBoundsException]
 
*[http://java.sun.com/j2se/1.5.0/ja/docs/ja/api/java/lang/ArrayIndexOutOfBoundsException.html ArrayIndexOutOfBoundsException]
12行目: 12行目:
 
*[http://java.sun.com/j2se/1.5.0/ja/docs/ja/api/java/lang/NoClassDefFoundError.html NoClassDefFoundError]
 
*[http://java.sun.com/j2se/1.5.0/ja/docs/ja/api/java/lang/NoClassDefFoundError.html NoClassDefFoundError]
  
これらのうちのどれが仮想マシンでスローされるかを知っており、その他については、プログラムでスローすべき状況を認識できる。
+
これらのうちのどれが仮想マシンでスローされるかを知っており、[[その他]]については、プログラムでスローすべき状況を認識できる。
  
 
  import java.util.regex.Matcher;
 
  import java.util.regex.Matcher;
128行目: 128行目:
 
{{amazon|4822282775}}
 
{{amazon|4822282775}}
 
----
 
----
{{include_html banner_html, "!SJC-P"}}
+
{{include_html [[banner_html]], "!SJC-P"}}

2020年2月16日 (日) 04:32時点における最新版

SJC-P 例外

次のいずれかがスローされる結果になる状況を認識できる。

これらのうちのどれが仮想マシンでスローされるかを知っており、その他については、プログラムでスローすべき状況を認識できる。

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class ExceptionTest {
    
    public static void main(String[] args) {
        /* 
         * ArrayIndexOutOfBoundsException 
         * 不正なインデックスを使って配列がアクセスされた 
         * インデックスが負または、配列のサイズ以上
         */
        try {
            int[] ary = {1,2,3,5};
            System.out.println(ary[-1]);
        } catch (ArrayIndexOutOfBoundsException e) {
            e.printStackTrace();
        }
        
        /*
         * ClassCastException
         * オブジェクトを継承関係にないクラスにキャストしようとした
         */
        try {
            Object o = new Integer(10);
            String s = (String)o;
        } catch (ClassCastException e) {
            e.printStackTrace();
        }
        
        /*
         * IllegalArgumentException
         * 不正な引数、または不適切な引数をメソッドに渡した
         */
        try {
            String key = "";
            System.out.println(System.getProperty(key));
        } catch (IllegalArgumentException e) {
            e.printStackTrace();
        }
        
        /*
         * IllegalStateException
         * 不正または不適切なときにメソッドが呼び出された
         */
        try {
            Pattern p = Pattern.compile("[a-z]");
            Matcher m = p.matcher("012345abcde");
            // m.find();
            System.out.println(m.start());
            
        } catch (IllegalStateException e) {
            // マッチが行われていない、または前回のマッチ操作が失敗
            e.printStackTrace();
        }
        /*
         * NullPointerException
         * null オブジェクトのインスタンスメソッドの呼び出し
         * null オブジェクトのフィールドに対するアクセスまたは変更
         * null の長さを配列であるかのように取得
         * null のスロットを配列であるかのようにアクセスまたは修正
         * null を Throwable 値であるかのようにスロー   
         */
        try {
            Exception e = null;
            throw e;
        } catch (NullPointerException npe) {
            npe.printStackTrace();
        } catch (Exception e) {
            e.printStackTrace();
        }

        /*
         * NumberFormatException
         * 文字列を数値型に変換しようとしたとき、文字列の形式が正しくない
         */
        try {
            int i = Integer.parseInt("abc");
        } catch (NumberFormatException e) {
            e.printStackTrace();
        }

        /*
         * ExceptionInInitializerError
         * static 初期化子で予想外の例外が発生したことを通知
         */
        try {
            ExceptionInInitializerTest t = new ExceptionInInitializerTest();
        } catch (ExceptionInInitializerError e) {
            e.printStackTrace();
        }
        /*
         * StackOverflowError
         * アプリケーションでの再帰の回数が多すぎてスタックオーバーフローが起こる場合にスロー
         */
        try {
            StackOverFlowTest t = new StackOverFlowTest();
            t.funcA();
        } catch (StackOverflowError e) {
            e.printStackTrace();
        }
    }
}
class ExceptionInInitializerTest {
    static {
        int i = Integer.parseInt("abc");
    }
}
class StackOverFlowTest {
    public void funcA() { funcA(); }
}


{{include_html banner_html, "!SJC-P"}}