JSONException永远不会抛出相应的try语句

时间:2016-09-20 10:47:31

标签: java android

@Override
public boolean execute(String action, JSONArray args, CallbackContext callbackContext) throws JSONException {
    try {
        if (action.equals("init")) {    
            ctrl = io.display.sdk.Controller.getInstance();
            ctrl.getInstance().init(cordova.getActivity().getBaseContext(), "5017");                
        } else if (action.equals("showAds")) {
            ctrl.setEventListener(new EventListener() {
                @Override
                public void onInit() {
                    ctrl.showAd("1445");
                }
            });
            callbackContext.success("");
        } 
        return true;

    } catch (JSONException e) {
        e.printStackTrace();
        callbackContext.error("Exception: " + e.getMessage());
        return false;      
    }         
}

执行此代码时出现以下错误:

  

JSONException永远不会在相应的try / catch body语句中抛出。

你能解释一下为什么抛出这个异常吗?语法对我来说没问题。

3 个答案:

答案 0 :(得分:0)

这里的问题是你将JSONArray作为参数,但你从未在方法中使用它。因此不会抛出与JSON相关的异常。

catch块应该捕获try块抛出的可能异常

答案 1 :(得分:0)

由于您使用throws作为方法,因此需要围绕函数调用包围try catch块。

答案 2 :(得分:0)

两个陈述Throws JSONExceptiontry-catch可以互相替换。

从签名中删除throws JSONException,异常将进入try body