我有小/中型
PHP应用程序,用于练习OOP和MVC技能.我有init / bootstrap文件,它调用调用Controller的Router – >服务层 – >存储库(数据库)然后将变量发送回View Layer(使用DiC / IOC处理的所有依赖项).
我创建了扩展Core Exception类的抽象类BaseException.然后我有不同的异常类 – DatabaseException,FileException等.
触发异常的示例:在数据库层中我尝试从数据库中获取数据,如果失败则会抛出新的DatabaseException.
示例2:在我处理文件包含,保存,删除的类中 – 如果发生错误,则抛出新的FileException.
在init / bootstrap文件中或者在BaseController中放置try catch代码的位置?但是如果Controller失败并且它抛出某种ControllerException会怎样.
在我看来,它可能看起来像这样(init.php文件):
try {
// create new router
$router = $container->get('Router');
$router->import'Config/routes.php');
// run the router
$router->route();
// load controller
$dispatcher = $container->get('Dispatcher');
$dispatcher->load();
} catch (DatabaseException $e) {
echo "Database error!";
$log->log('Database error', $e->getMessage());
} catch (FileException $e) {
echo "File error!";
$log->log('File error', $e->getMessage());
} catch (Exception $e) { // default
echo "Some exceptional error!";
$log->log('Default exception', $e->getMessage());
}
还有一个问题,如何记录这些异常(错误),如上例所示,还是应该在BaseException中注入Log类并处理日志记录?