Ticket #6765 (closed enhancement: fixed)
JSON Procedure Call: error handling
| Reported by: | guest | Owned by: | dmachi |
|---|---|---|---|
| Priority: | normal | Milestone: | 1.2 |
| Component: | RPC | Version: | 1.1.0 |
| Severity: | normal | Keywords: | RPC, JSON, error, exception |
| Cc: | alex |
Description
Error object contains only HTTP error. Example:
var myObject = new dojo.rpc.JsonService("/definition.smd");
var myDeferred = myObject.add(121,5});
myDeferred.addCallback(myCallbackMethod);
myDeferred.addErrback(myErrorbackMethod);
Exception thrown deliberately in PHP file (token is not defined).
if (
Sessions::get()->getToken()
!== Request::get()->getRpcParams('token')
) :
throw new Exception('RPC Server: Invalid token', 3006);
endif;
Result:
message : Unable to load /rpcServer.php status:400
fileName : https://www.somewebsite.org/js/dojo/_base/_loader/bootstrap.js
lineNumber : 475
stack : Error("Unable to load /rpcServer.php status:400")@:0
([object Error])@https://www.somewebsite.org/js/dojo/_base/_loader/bootstrap.js:475
()@https://www.somewebsite.org/js/dojo/_base/_loader/bootstrap.js:762
([object Error])@https://www.somewebsite.org/js/dojo/_base/_loader/bootstrap.js:678
([object Error])@https://www.somewebsite.org/js/dojo/_base/_loader/bootstrap.js:710
([object Object])@https://www.somewebsite.org/js/dojo/_base/_loader/bootstrap.js:975
(-3)@https://www.somewebsite.org/js/dojo/_base/_loader/bootstrap.js:889
name : Error
Expected: Have access to exception data including optional field data as specified in JSON-RPC over HTTP.
responseText : {"result":null,"error":{"code":-32600,"message":"Invailid request.","data":"RPC Server: Invalid token"},"id":null}
Resolution: In RpcService?.js on line 83 entire object data should be passed and not only property message congaing only HTTP message. Current code:
deferredRequestHandler.errback(new Error(data.message));
Suggested change:
deferredRequestHandler.errback(new Error(data));
In this manner developer would have chance to fine tune error handling.
Change History
Note: See
TracTickets for help on using
tickets.