我目前正在使用Php的Yii框架构建一个Web应用程序。
我有一个场景,应用程序在初始化阶段抛出一个异常,就像会要读取会话数据一样(目前来自Redis)。当我的Redis服务器关闭且我的应用程序无法与Redis通信时,会发生此异常。
一个有效的解决方案是将整个应用程序放在try catch块中,如果出现未处理的异常,请记录并显示一个非常友好的错误页面。
更具体地说:
Yii的应用程序以其主脚本index.php开头,为
Yii::app()->run();
我可以接受它:
try {
Yii::app()->run();
} catch (Exception $e) {
header('Location: error.html');
}
我怀疑这个尝试阻塞程序会对整个应用程序产生多大的影响以及这种方法会导致多少性能损失?
答案 0 :(得分:0)
如果没有抛出错误,catch块中的任何内容都不会运行,因此不会使您的应用程序更重。
如果抛出错误并且catch块运行,则意味着该应用程序不可用,因此无法变得“更重”。
通过添加try-catch块来增加文件大小的效果可以忽略不计(或为零),因为PHP是一种解释型脚本语言。