17

<init>Java例外で何を意味しますか?

例えば:

BlahBlahException...

at java.io.FileInputStream.<init>(FileInputStream.java:20)
4

2 に答える 2

20

オブジェクトの構築で例外がスローされることには、次の 2 つのオプションがあります。

  • コンストラクターで
  • 変数の初期化中

私が書いたこのデモをチェックしてください: http://ideone.com/Mm5w5


class Main
{
        public static void main (String[] args) throws java.lang.Exception
        {
                try
                { new Test(); } catch (Exception e) { e.printStackTrace(); }

                try
                { new Test2(); } catch (Exception e) { e.printStackTrace(); }

                try
                { new Test3(); } catch (Exception e) { e.printStackTrace(); }


        }

        static class Test
        {
                Object obj = getObject();
                Object getObject()
                { throw new RuntimeException("getObject"); }
        }

        static class Test2
        {
                Test2()
                {
                        throw new RuntimeException("constructor");
                }
        }

        static class Test3
        {
                Object obj1 = null;
                String str = obj1.toString();
        }
}

プロデュース:

java.lang.RuntimeException: getObject
    at Main$Test.getObject(Main.java:24)
    at Main$Test.<init>(Main.java:22)
    at Main.main(Main.java:9)
java.lang.RuntimeException: constructor
    at Main$Test2.<init>(Main.java:31)
    at Main.main(Main.java:12)
java.lang.NullPointerException
    at Main$Test3.<init>(Main.java:38)
    at Main.main(Main.java:15)
于 2012-08-03T05:50:24.220 に答える
7

<初期化>

と呼ばれる

インスタンス初期化メソッド

これは、定義したコンストラクターからJavaコンパイラーによって作成されます。有効なメソッド定義ではありませんが、JVMはこれを想定しており、コンストラクターに入力したものはすべてメソッドで実行されます。したがって、fromで例外が発生した場合、実行されたJavaクラスのコンストラクターからのものであると確信できます。これについて詳しくは、オブジェクトの初期化に関するBillvennerの設計手法の記事を参照してください。

于 2012-08-03T05:59:18.963 に答える