2

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

谢谢你。

4

3 回答 3

6

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

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

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

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

但是,如果您使用异常,您可以尝试另一台服务器,甚至尝试不同的方法(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;

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

于 2010-10-02T12:32:46.010 回答
2

亚历山大,

die() 和 Exceptions 完成不同的事情。

“die”语言结构只是停止脚本的执行,如果它像函数一样被调用,可能会输出参数。

另一方面,异常是在 OOP 上下文中使用的更高级的结构,可让开发人员更灵活地决定是否需要停止脚本,如果需要,以何种方式,向用户显示什么输出等。

异常比这要复杂一些,因此您可能应该先用一些 OOP 记录自己,或者就此阅读 zend 框架,您将了解什么是异常。

不过,对于简单的东西,您总是可以使用 exit (或 die,这是同一件事)。

我希望这会有所帮助,斯拉夫语

于 2010-10-02T12:30:11.110 回答
1

1 例外的主要优点是什么?

主要优点是:

  • 失败的函数不必用错误条件污染它们的返回
  • 类型异常可以在代码中的适当级别处理,决定代码的哪个部分可以处理哪些错误
  • 您可以在异常本身中存储有关错误条件的更多信息,从而更轻松地处理它并可能从中恢复。

2 我可以用 die() 控制我的错误吗?

我几乎不会称之为控制,我会称之为放弃实际处理错误。在我的项目中,没有一点是die()真正用户友好的,所有这些die('...some error condition...');PHP 代码示例恕我直言,仅适用于开发中的项目。在生产中,您希望您的用户能够以最简单的方式继续他们的任务/程序,所以“再试一次”(如果不太可能再次遇到错误条件),“抱歉,这不起作用' / 其他类型的消息、表单/页面都更可取die()

于 2010-10-02T12:31:46.913 回答