Note:

If you want to create a new page for developers, you should create it on the Moodle Developer Resource site.

Errors handling in web services: Difference between revisions

From MoodleDocs
No edit summary
Line 14: Line 14:


All exceptions contain a translated message + debuginfo.
All exceptions contain a translated message + debuginfo.
=== Issue ===
clients can not match the function error because message error could be translated
=== Solution ===
The goal being to let the developer write his own error message, we should not translate the message. Maybe only using coding exception. In this case a second issue araise. Sometimes the exception comes from a core function call. In this case the exception message is already translated. We can not do much for it I suppose.


== Error messages ==
== Error messages ==
Line 23: Line 30:
* download/upload script return string error message (JSON) + error code. The token script returns just an error message.
* download/upload script return string error message (JSON) + error code. The token script returns just an error message.


=== Issues ===
=== Issue ===
* clients can not match the function error because message error could be translated
web service functions are not consistent. Some never return error message (exception is thrown and all transaction are rollbacked), and some bypass DB failure returning an error message (mostly linked to an id).
* web service functions are not consistent: some never return error message (exception is thrown and all transaction are rollbacked), and some bypass DB failure returning an error message (mostly linked to an id).


== Suggestion ==
== Solution ==
I think the web service developer still should choose if he wants to return an error message or an exception. The developer should still follow the rule about DB WRITE functions that must rollback when an exception is raised. We usually throw back the exception to the server.
I think the web service developer still should choose if he wants to return an error message or an exception. The developer should still follow the rule about DB WRITE functions that must rollback when an exception is raised. We usually throw back the exception to the server.
The goal being to let the developer write his own error message, we should add some code error to all exceptions or messages.

Revision as of 04:28, 10 April 2012


Exceptions

Exceptions are caught by the server that generate its own error format. For example in REST:

<?xml version="1.0" encoding="UTF-8"?> <EXCEPTION class="invalid_parameter_exception">

   <MESSAGE>Invalid parameter value detected</MESSAGE>
   <DEBUGINFO></DEBUGINFO>

</EXCEPTION>

All exceptions contain a translated message + debuginfo.

Issue

clients can not match the function error because message error could be translated

Solution

The goal being to let the developer write his own error message, we should not translate the message. Maybe only using coding exception. In this case a second issue araise. Sometimes the exception comes from a core function call. In this case the exception message is already translated. We can not do much for it I suppose.

Error messages

  • 16 functions: only throw exception
  • 2 functions: the web service function catches some exceptions and return a string error message for each faulty element (create notes / send messages)
  • download/upload script return string error message (JSON) + error code. The token script returns just an error message.

Issue

web service functions are not consistent. Some never return error message (exception is thrown and all transaction are rollbacked), and some bypass DB failure returning an error message (mostly linked to an id).

Solution

I think the web service developer still should choose if he wants to return an error message or an exception. The developer should still follow the rule about DB WRITE functions that must rollback when an exception is raised. We usually throw back the exception to the server.