java - try-catch around 回调

标签 java callback try-catch

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,因为回调代码是在堆栈的不同部分执行的。有没有办法在本地捕获此类异常?

最佳答案

您已经捕获了异常。尝试如下 -

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

输出:

Exception caught !!!

关于java - try-catch around 回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13149076/

相关文章:

java - 找不到无法解决类似问题的基本名称包

android - 当 Activity 通过 "Don' 被终止时不会触发 ActivityLifecycleCallbacks t keep Activity ”

android - ViewPager 在第一页和最后一页重新加载 fragment

javascript - 如何在其他 try block 中访问 try block 中的变量?

java - 编写静态 void 方法 - "cannot find symbol"编译错误

java - 当我通过 IntelliJ 部署 WAR 时出现错误

java - 为什么 finally block 不能修改从 catch block 返回的 Integer 类型数据。 java

flutter - Dart - 无法从连接流中捕获异常

java - 使用扫描仪输入写入二维数组值

jquery - jQuery 加载函数的回调