Exceptions and assertions

The Jaws API uses two types of language-level constructs to handle error cases: exceptions and assertions. To know how they are handled, please refer to the Jaws_Toolkit page.

Exceptions

When a run-time error occurs, exceptions should be used in most cases. Jaws has its own exception class, called Jaws_Exception. It is used slightly differently than the standard Exception class but implements all of its functionalities, as it extends it.

Constructor

The constructor of the Jaws_Exception class has the following syntax:

Jaws_Exception::__construct(integer $lvl, string $message)

$message is the exception message; $lvl can be one of the following exception severity level codes:

  • Jaws_Exception::EC_ERR - A non-fatal error
  • Jaws_Exception::EC_FATERR - A fatal error
  • Jaws_Exception::EC_CORE - A fatal error caused internally, most probably by a programming error or an incoherency
  • Jaws_Exception::EC_UNKNOWN - Unknown: do not use this code

Additional methods

Additionally to the methods already implemented by the Exception class, the Jaws_Exception class also implements the following methods:

  • Jaws_Exception::getLvl() - Get the exception's severity level
  • Jaws_Exception::getLvlStr() - Get the severity level as a string
  • Jaws_Exception::getBacktrace() - Return the backtrace information in a string, using the Jaws' customized backtrace parser

Assertions

Assertions are used to avoid programming errors (EC_CORE exceptions). In production, the evaluation of assertions is disabled to fasten the execution (this is done by turning the Jaws::DEBUG flag to false). Assertions should be used only when, in the end, the programming error will be caught anyway, but in a much less favourable, elegant and meaningful way. Assertions should be used as much as possible instead of Jaws_Exception::EC_CORE exceptions.

< Click here to go back to Jaws 2 Internals section