B.9. Exceptions

Exceptions related to a particular class are always named for that class. Generic exceptions use an _Exception name suffix, and specific exceptions add a single string after that.

For example, a generic example exception would be Acme_Example_Exception, while related FooBar and BazDib exceptions would be named Acme_Example_Exception_FooBar and Acme_Example_Exception_BazDib, respectively.

Acme/
    Example.php
    Example/
        Exception.php
        Exception/
            FooBar.php
            BazDib.php

Classes descended from Solar_Base automatically convert specific error codes into exception class names, and then attempt to use a related locale string for the exception message.

For example, if you have this in your locale file ...

<?php
return array (
    'ERR_FOO_BAR' => "A foo-bar exception occurred.",
    'ERR_BAZ_DIB' => "Baz-dib was raised, you should look into it.",
);

... and you throw an exception using Solar_Base::_exception() like so ...

<?php
class Acme_Example extends Solar_Base {
    function kaboom()
    {
        throw $this->_exception('ERR_FOO_BAR');
    }
}

... then Solar automatically finds the Acme_Example_Exception_FooBar class and throws it, using the localized ERR_FOO_BAR message.



Local