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 21: Line 21:
* DB WRITE functions must rollback when an exception is raised. We usually throw back the exception to the server.
* DB WRITE functions must rollback when an exception is raised. We usually throw back the exception to the server.


== Error messages ==
== Warning messages ==


===Format ===
===Format ===
Line 44: Line 44:
</code>
</code>


=== When to send an error message ===
=== When to send a warning ===
TODO
TODO

Revision as of 04:15, 24 April 2012


Exceptions

Format

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.


When to send an exception

  • DB WRITE functions must rollback when an exception is raised. We usually throw back the exception to the server.

Warning messages

Format

/**

 * Creates a warnings external_multiple_structure
 * @return external_multiple_structure
 * @since  Moodle 2.3
 */
private static function warnings() {
    return new external_multiple_structure(
	      new external_single_structure( array(
	               'messageid' => new external_value(PARAM_INT, 'message id is a string that can be parsed by the client developer to find out what kind of error is it. For example: 'userdoesntexist),                   
	               'debugmessage' => new external_value(PARAM_TEXT, 'a not translated debug message to help the client to know straight away what is the issue'),
                      'element'   => new external_value(PARAM_TEXT, 'element'),
	               'elementid' => new external_value(PARAM_INT, 'element id'),
	           ), 'warning'), 'list of warnings'
	   );
	 }

When to send a warning

TODO