「SJC-P 例外」の版間の差分
ナビゲーションに移動
検索に移動
(ページの作成:「==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 例外
次のいずれかがスローされる結果になる状況を認識できる。
- ArrayIndexOutOfBoundsException
- ClassCastException
- IllegalArgumentException
- IllegalStateException
- NullPointerException
- NumberFormatException
- AssertionError
- ExceptionInInitializerError
- StackOverflowError
- NoClassDefFoundError
これらのうちのどれが仮想マシンでスローされるかを知っており、その他については、プログラムでスローすべき状況を認識できる。
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"}}
© 2006 矢木浩人