带有命名空间的未捕获异常

时间:2014-10-02 12:38:18

标签: php namespaces

我正在读一本关于php的书,我发现这个脚本不起作用:

namespace woo\controller {

    // woo\controller\ApplicationHelper;
    class ApplicationHelper {

        function getOptions() {
            if (!file_exists("data/woo_options_not_there.xml")) {
                $r = new \woo\base\AppException("Non riesco ad aprire il file<br>");
                throw new $r;
            }
            $options = simplexml_load_file("data/woo_options.xml");
            $dsn = (string) $options->dsn;
            print $dsn;
        }

    }

    $d = (new ApplicationHelper())->getOptions();
}

namespace woo\base {

    class AppException extends \Exception {

    }

}

你能帮助我吗?

这是错误的:

致命错误:C:\ xampp \ htdocs \ 9781430260318_Chapter_12_Code \ listing12.00.php中未捕获的异常'woo \ base \ AppException':11堆栈跟踪:#0 C:\ xampp \ htdocs \ 9781430260318_Chapter_12_Code \ listing12.00。 php(20):woo \ controller \ ApplicationHelper-&gt; getOptions()#1 {main}在第11行的C:\ xampp \ htdocs \ 9781430260318_Chapter_12_Code \ listing12.00.php中抛出

1 个答案:

答案 0 :(得分:0)

所以让我们按照这里的逻辑顺序

我们正在创建类ApplicationHelper,然后实例化它。然后,我们调用getOptions()查找XML文件,如果找不到,则抛出异常。

你的代码工作正常,你只是忘了catch异常(这会产生致命的PHP错误)

try {
    $d = (new ApplicationHelper())->getOptions();
} catch(\woo\base\AppException $err) {
    echo 'Error: ' . $err->getMessage();
}