ExceptionInInitializerError
| 日本語 | 初期化時例外異常 |
| 英語 | exception in initializer error |
| ふりがな | えくせぷしょんいんいにしゃらいざーえらー |
| フリガナ | エクセプションインイニシャライザーエラー |
J2SEに含まれるクラスのひとつ。パッケージも含めたクラス名はjava.lang.ExceptionInInitializerError。
static初期化子内で例外が投げられた場合に投げられる。Errorクラスのサブクラスのため厳密には例外ではない。
static初期化子は「クラスを使用した時」に呼ばれる特殊なメソッドである。「クラスを使用した時」とは「インスタンスを作成した時」よりも前であり、使用する側から「呼び出す」メソッドではない。
そのため、基本的にstatic初期化子で発生した例外はcatchで拾うことができず、そのためこのような形で投げられる。
static初期化子内で例外が投げられた場合に投げられる。Errorクラスのサブクラスのため厳密には例外ではない。
static初期化子は「クラスを使用した時」に呼ばれる特殊なメソッドである。「クラスを使用した時」とは「インスタンスを作成した時」よりも前であり、使用する側から「呼び出す」メソッドではない。
そのため、基本的にstatic初期化子で発生した例外はcatchで拾うことができず、そのためこのような形で投げられる。
// Sample.java
public class Sample
{
public static void main( String[] args )
{
try
{
// NormalClassクラスを使います。
// (インスタンスを作る必要はありません)
String name = NormalClass.class.getName();
}
catch( ExceptionInInitializerError e )
{
e.printStackTrace();
// java.lang.ExceptionInInitializerError
// at java.lang.Class.forName0(Native Method)
// at java.lang.Class.forName(Class.java:140)
// at Sample.main(Sample.java:10)
// Caused by: java.lang.NullPointerException
// at NormalClass.<clinit>(Sample.java:35)
// ... 3 more
// このように、staticメソッド内で例外が投げられると
// ExceptionInInitializerError例外が発生します。
}
}
}
/**
* 普通のクラス。
*/
class NormalClass
{
/**
* static初期化子。
*/
static
{
// NullPointerException例外を投げさせます。
Integer integer = null;
integer.toString();
}
}
public class Sample
{
public static void main( String[] args )
{
try
{
// NormalClassクラスを使います。
// (インスタンスを作る必要はありません)
String name = NormalClass.class.getName();
}
catch( ExceptionInInitializerError e )
{
e.printStackTrace();
// java.lang.ExceptionInInitializerError
// at java.lang.Class.forName0(Native Method)
// at java.lang.Class.forName(Class.java:140)
// at Sample.main(Sample.java:10)
// Caused by: java.lang.NullPointerException
// at NormalClass.<clinit>(Sample.java:35)
// ... 3 more
// このように、staticメソッド内で例外が投げられると
// ExceptionInInitializerError例外が発生します。
}
}
}
/**
* 普通のクラス。
*/
class NormalClass
{
/**
* static初期化子。
*/
static
{
// NullPointerException例外を投げさせます。
Integer integer = null;
integer.toString();
}
}
// Sample.java
public class Sample
{
public static void main( String[] args )
{
try
{
// NormalClassクラスを使います。
// (インスタンスを作る必要はありません)
String name = NormalClass.class.getName();
}
catch( ExceptionInInitializerError e )
{
e.printStackTrace();
// java.lang.ExceptionInInitializerError
// at java.lang.Class.forName0(Native Method)
// at java.lang.Class.forName(Class.java:140)
// at Sample.main(Sample.java:10)
// Caused by: java.lang.NullPointerException
// at NormalClass.<clinit>(Sample.java:35)
// ... 3 more
// このように、staticメソッド内で例外が投げられると
// ExceptionInInitializerError例外が発生します。
}
}
}
/**
* 普通のクラス。
*/
class NormalClass
{
/**
* static初期化子。
*/
static
{
// NullPointerException例外を投げさせます。
Integer integer = null;
integer.toString();
}
}




