簡體   English   中英

雲代碼功能:try-catch沒有捕獲ClassCastException

[英]Cloud Code function: try-catch did not catch ClassCastException

這是雲代碼功能:

Parse.Cloud.define('testQuery', function(request, response) {
    response.success('Test String');
});

我通過Parse Android SDK調用此函數:

try {
    HashMap<String, Object> params = new HashMap<>();

    ParseCloud.callFunctionInBackground("testQuery", params, new FunctionCallback<ArrayList<String>>() {
        @Override
        public void done(ArrayList<String> results, ParseException e) {
            Log.d("Test", "Done");
        }
    });
} catch (ClassCastException e) {
    Log.d("Test", "Exception: " + e.toString());
}

我知道我是從String轉換為ArrayList,這將導致ClassCastException。 因此,我添加了一個try-catch,但該應用程序仍然崩潰。 我無法捕獲異常的原因是什么? 謝謝。

E/AndroidRuntime: FATAL EXCEPTION: main
Process: app.honestly, PID: 23014
java.lang.ClassCastException: java.lang.String cannot be cast to java.util.ArrayList
    at app.myapp.MyActivity$1.done(MyActivity.java:189)
    at com.parse.ParseTaskUtils$2$1.run(ParseTaskUtils.java:115)
    at android.os.Handler.handleCallback(Handler.java:739)
    at android.os.Handler.dispatchMessage(Handler.java:95)
    at android.os.Looper.loop(Looper.java:135)
    at android.app.ActivityThread.main(ActivityThread.java:5234)
    at java.lang.reflect.Method.invoke(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:372)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:909)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:704)

如名稱ParseCloud.callFunctionInBackground所示, callback參數是異步執行的。 輸入try catch ,保存ParseCloud.callFunctionInBackgroundcallback ,退出try catch ,然后在某個時間點執行callback函數。

解決它的一種方法是接受一個String ,然后將其轉換為數組列表:

ParseCloud.callFunctionInBackground("testQuery", params, new FunctionCallback<String>() {
    @Override
    public void done(String results, ParseException e) {
        try { 
            List<String> result = convertToList(results);

        }catch(Exception ex){
            Log.e("Test", "Problem " + ex);
        }
        Log.d("Test", "Done");
    }
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM