Java 云代码函数:try catch未捕获ClassCastException

Java 云代码函数:try catch未捕获ClassCastException,java,android,parse-platform,parse-cloud-code,Java,Android,Parse Platform,Parse Cloud Code,下面是一个云代码函数: Parse.Cloud.define('testQuery', function(request, response) { response.success('Test String'); }); 我通过解析Android SDK调用此函数: try { HashMap<String, Object> params = new HashMap<>(); ParseCloud.callFunctionInBackgroun

下面是一个云代码函数:

Parse.Cloud.define('testQuery', function(request, response) {
    response.success('Test String');
});
我通过解析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());
}

作为名称
ParseCloud.callFunctionInBackground
建议异步执行
callback
参数。输入
try-catch
,存储
ParseCloud.callFunctionInBackground
callback
,退出
try-catch
,然后在某个时间点执行
callback
函数

解决此问题的一种方法是接受
字符串
,然后将其转换为数组列表:

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");
    }
});
ParseCloud.callFunctionInBackground(“testQuery”,参数,新函数回调(){
@凌驾
public void done(字符串结果,parsee异常){
试试{
列表结果=转换器列表(结果);
}捕获(例外情况除外){
日志e(“测试”、“问题”+ex);
}
日志d(“测试”、“完成”);
}
});

try/catch无法捕获异常,因为它发生在不同的线程上。哦。。。我该怎么做?这取决于你想要实现什么。我首先要为函数指定正确的参数,这样就不会发生异常。@yole感谢您的帮助。如果运行正常,该函数将返回一个ArrayList,但有时如果服务器停机或类似“此应用程序在过去一分钟内执行了22470个请求,并超出了其请求限制”,则会返回一个字符串。有什么办法我可以处理吗?谢谢。将您的回调声明为
FunctionCallback
,并检查您收到的值的类型。如果需要捕获异常,我应该怎么做?谢谢。你好@miensol,谢谢你的帮助。如果运行正常,函数将返回一个ArrayList,但有时如果服务器停机或类似“此应用程序在过去一分钟内执行了22470个请求,并超出了其请求限制”,函数将返回一个字符串。有什么办法我可以处理吗?谢谢。@iForests当类强制转换异常发生时,请提供完整的堆栈跟踪。@iForests异常似乎发生在回调的
done
方法中,该方法位于您未包含在问题中的代码行上。MyActivity$1.done(MyActivity.java:189)是
public void done(ArrayList results,ParseException e){
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");
    }
});