我目前正在使用 PHP。我正在为我正在构建的 CMS 开发一个错误系统(为了好玩)。对于我的系统中的致命错误(不是在 php 编译器中),我创建了一个 FatalException 类,它扩展了内置的 Exception 类。由于这些类型的错误无论如何都会使系统停止运行,因此我在 __construct 中退出了。
class FatalException extends Exception{
public function __construct($message) {
exit("<h1 style='color:red;' >FATAL ERROR: $message </h1>");
}
}
因此,在我的代码中,我将检查与数据库的连接之类的内容,如果不能,我将抛出 FatalException(“无法连接到数据库:$database_error_message”)。它不会在 try/catch 块中。
例如,当我运行代码并且无法连接到数据库时,我在屏幕上看到的只是一个大红色字母的句子。所以它工作得很好,但这是不好的做法/编码吗?
编辑:
事实上,它并没有以这种方式开始。我最初是在记录错误,然后在捕获区域中退出,但后来我想,如果所有致命错误无论如何都会退出,那么只需放入 in 构造函数。然后我注意到它实际上并没有到达它正在退出的捕获区域。因此,将语句放在 try/catch 块中是一个有争议的问题。这导致了这个问题。