B.9. 异常

某个类的异常总是命名为该类。一般的异常以_Exception为后缀,如果是更具体的异常则在那之后再加一个单字符串。

例如,一般的示例异常可能是Acme_Example_Exception,然而相关的FooBarBazDib异常相应的就是Acme_Example_Exception_FooBarAcme_Example_Exception_BazDib

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

继承自Solar_Base的类会自动把错误代码转换成异常类名,然后使用相关的本地字符串显示异常消息。

例如,如果你的本地文件中有这些代码。。。

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

。。。然后你像下面这样使用Solar_Base::_exception()抛出一个异常。。。

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

。。。接着,Solar会找到Acme_Example_Exception_FooBar异常类并且抛出它,使用本地文件中的ERR_FOO_BAR消息。