我正在编写一个 PHP Web 应用程序,它将在不久的将来在生产环境下运行,而不是使用 non-user-friendly die()
,我想我会想出一个Class
处理 ErrorMessages 的方法。
基本上,我的思考过程是这样的:
如果 Web 应用程序处于调试/开发模式,die() 就可以了。
如果 Web 应用程序处于生产/实时模式,请不要用错误消息打扰用户 - 而是尽可能继续,但向管理员发送电子邮件,转储错误消息和我们可以做的任何其他事情(例如:登录用户、会话详细信息、IP 地址、时间等)
我的(粗略)代码如下:
<?php
require_once('config.php');
class ErrorMessage
{
private $myErrorDescription;
public function __construct($myErrorDescription)
{
$this->myErrorDescription = (string) $myErrorDescription;
if (DEBUG_MODE === true)
die($myErrorDescription);
else
$this->sendEmailToAdministrator();
}
private function sendEmailToAdministrator()
{
// Send an e-mail to ERROR_LOGGING_EMAIL_ADDRESS with the description of the problem.
}
}
?>
这Class
将用作:
if (EXPECTED_OUTCOME) {
// ...
}
else {
new ErrorMessage('Application failed to do XYZ');
}
这是一种明智的方法还是我在这里重新发明轮子?我知道框架通常有错误处理的解决方案,但我没有使用(也不想)。
也就是说,我应该使用Exceptions
andThrow
来代替它吗?这种方法的优点/缺点是什么?