![](/img/trans.png)
[英]Parametrized Method in Java: try-catch does not catch ClassCastException (on Android)
[英]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.callFunctionInBackground
和callback
,退出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.