Android 从侦听器引发异常

Android 从侦听器引发异常,android,asynchronous,exception,exception-handling,listener,Android,Asynchronous,Exception,Exception Handling,Listener,我正在将同步方法替换为执行相同任务的异步方法。旧方法是在出现问题时抛出自定义异常。现在我有了一个新方法中的侦听器,我不知道如何继续抛出该异常: @Override protected void methodBeingChanged() throws customException { asyncMethod(new Handler() { @Override public void onSuccess(String response, int respo

我正在将同步方法替换为执行相同任务的异步方法。旧方法是在出现问题时抛出自定义异常。现在我有了一个新方法中的侦听器,我不知道如何继续抛出该异常:

@Override
protected void methodBeingChanged() throws customException {

    asyncMethod(new Handler() {
        @Override
        public void onSuccess(String response, int responseCode) {
        }

        @Override
        public void onError(IOException e) {
        }
    });

}

此异常稍后会被另一个类中的另一个方法捕获,该方法根据异常消息向用户提供反馈。

这听起来可能很傻,但只是抛出它:p


这是不可能的。异步任务在另一个线程上运行,当前的
methodBeingChanged
立即完成,这意味着
methodBeingChanged
不会抛出异常


唯一的解决方案是修改调用方代码,为特定异常添加另一个侦听器方法

您不抛出错误,只需通知侦听器发生错误即可。您必须重写处理异常的代码部分,而不是处理来自侦听器的通知。这不起作用。它给了我一个错误“未处理的异常”,并建议用一个“try,catch”来包围它。你也可以简单地抓住它。因为您刚才提到了抛出异常,所以我认为您只想抛出异常以便在其他地方被捕获。但是这种方式你可以很容易地抓住它。是的,但是这种方式并没有被“方法改变”所抓住,现在我明白这是不可能的(谭回答)。
@Override
protected void methodBeingChanged() throws customException {

    asyncMethod(new Handler() {
        @Override
        public void onSuccess(String response, int responseCode) {
        }

        @Override
        public void onError() {
            try {
                throw new customException ();
            }catch(customException cEx) {
                // Do stuff
            }
        }
    });

}