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");
}
});