Catch exceptions in async callbacks.

This commit is contained in:
Bryce Curtis 2010-09-09 11:03:46 -05:00
parent 1fa41df3f1
commit b02f376826

View File

@ -258,6 +258,7 @@ PhoneGap.execAsync = function(success, fail, clazz, action, args) {
var callbackId = clazz + PhoneGap.callbackId++; var callbackId = clazz + PhoneGap.callbackId++;
PhoneGap.callbacks[callbackId] = {success:success, fail:fail}; PhoneGap.callbacks[callbackId] = {success:success, fail:fail};
var r = PluginManager.exec(clazz, action, callbackId, JSON.stringify(args), true); var r = PluginManager.exec(clazz, action, callbackId, JSON.stringify(args), true);
if (r) {
eval("var v="+r+";"); eval("var v="+r+";");
// If status is OK, then return value back to caller // If status is OK, then return value back to caller
@ -270,18 +271,29 @@ PhoneGap.execAsync = function(success, fail, clazz, action, args) {
console.log("Error: Status="+r.status+" Message="+v.message); console.log("Error: Status="+r.status+" Message="+v.message);
return null; return null;
} }
}
} catch (e) { } catch (e) {
console.log("Error: "+e); console.log("Error: "+e);
} }
}; };
PhoneGap.callbackSuccess = function(callbackId, args) { PhoneGap.callbackSuccess = function(callbackId, args) {
PhoneGap.callbacks[callbackId].success(args); try {
PhoneGap.callbacks[callbackId].success(args.message);
}
catch (e) {
console.log("Error in success callback: "+callbackId+" = "+e);
}
delete PhoneGap.callbacks[callbackId]; delete PhoneGap.callbacks[callbackId];
}; };
PhoneGap.callbackError = function(callbackId, args) { PhoneGap.callbackError = function(callbackId, args) {
PhoneGap.callbacks[callbackId].fail(args); try {
PhoneGap.callbacks[callbackId].fail(args.message);
}
catch (e) {
console.log("Error in error callback: "+callbackId+" = "+e);
}
delete PhoneGap.callbacks[callbackId]; delete PhoneGap.callbacks[callbackId];
}; };