php OOP 异常或 die()?

标签 php oop exception coding-style die

我正在开发一些项目。我想控制不同的错误。我知道在所有流行的框架和 php 项目中都有不同的异常。但我认为这不是必需的工作。如果发生错误,我们可以用我们的消息制作 die()。 1. Exceptions 的主要优点是什么? 2. 我可以用 die() 控制我的错误吗?

谢谢。

最佳答案

好吧,你可以使用 die()。但这使得所有错误都是致命的。这意味着您根本无法尝试从错误中恢复。在某些情况下,这样做很好。

但在大多数情况下,您可能希望能够在错误发生后进行“清理”,或者尝试另一种方法。这是异常派上用场的地方......它们让你选择在哪里以及是否要处理错误。它们让您尝试从错误中优雅地恢复。

例如,假设您有一个从远程服务器下载文件的方法:downloadFromRemoteServer($address);

如果你使用die(),如果下载失败,脚本终止。故事结束。

但如果您使用异常(exception),您可以尝试另一台服务器,甚至尝试不同的方法(HTTP 与 FTP 等):

try {
    $file = downloadFromRemoteServer('http://example.com/foo');
} catch (DownloadFailedException $e) {
    try {
        $file = downloadFromRemoteServer('http://secondtry.example.com/foo');
    } catch (DownloadFailedException $e2) {
        die('Could not download file');
    }
}
return $file;

但请记住,异常仅在特殊情况下才有用。它们并不意味着用于任何可能的错误。例如,如果用户没有正确验证他们的电子邮件地址,这并不异常(exception)。但是如果你无法连接到数据库服务器,或者在数据库中有冲突,那将是一个异常情况......

关于php OOP 异常或 die()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3845494/

相关文章:

php - 调用 mysql_connect() 和 mysql_close() 16 次会导致高数据库连接吗?

c# - 初始化许多静态实例怎么样?有没有人见过用法?

c++ - 虚拟的,怎么用?

java - 如何记录并重新抛出整个类

c# - Sprite 批处理: "Begin cannot be called again until End has been successfully called."

php - Laravel getCountForPagination() 返回 Object 而不是 int

javascript - 找不到文件,图表不出现

php - 将一个应用程序连接到另一个应用程序的数据库时出错

用于映射多个 MySQL 表的 PHP 设计模式

sql-server - 如何从 PyMSSQL 捕获异常