4
public class Test {

    public static void main(String[] args) {

        try {
            doSomething(new TestCallback() {
                @Override
                public void doCallback() {
                    throw new NullPointerException();
                }
            });
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public static void doSomething(TestCallback callback){
        callback.doCallback();
    }

    interface TestCallback {
        public void doCallback();
    }
}

RESULT:
java.lang.NullPointerException
    at managers.concurrency.Test$1.doCallback(Test.java:11)
    at managers.concurrency.Test.doSomething(Test.java:20)
    at managers.concurrency.Test.main(Test.java:8)

上記のコードではNullPointerException、コールバック コードがスタックの別の部分で実行されるため、取得されます。そのような例外をローカルでキャッチする方法はありますか?

4

1 に答える 1

5

あなたはすでに例外をキャッチしています。次のようにしてみてください -

    try {
        doSomething(new TestCallback()  {
            @Override
            public void doCallback()  {
                throw new NullPointerException();
            }
        });
    } catch (Exception e) {
        System.out.println("Exception caught !!!");
    }

出力:

例外がキャッチされました!!!
于 2012-10-30T23:37:30.293 に答える