我正在开发一些项目。我想控制不同的错误。我知道在所有流行的框架和 php 项目中都有不同的例外。但我认为这不是必需的工作。如果发生错误,我们可以使用我们的消息制作 die()。1. Exceptions 的主要优点是什么?2. 我可以用 die() 控制我的错误吗?
谢谢你。
我正在开发一些项目。我想控制不同的错误。我知道在所有流行的框架和 php 项目中都有不同的例外。但我认为这不是必需的工作。如果发生错误,我们可以使用我们的消息制作 die()。1. Exceptions 的主要优点是什么?2. 我可以用 die() 控制我的错误吗?
谢谢你。
好吧,你可以使用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;
但请记住,异常仅对特殊情况有用。它们不适用于任何可能的错误。例如,如果用户没有正确验证他们的电子邮件地址,这并不例外。但是如果你无法连接到数据库服务器,或者数据库中有冲突,那将是一个例外情况......
亚历山大,
die() 和 Exceptions 完成不同的事情。
“die”语言结构只是停止脚本的执行,如果它像函数一样被调用,可能会输出参数。
另一方面,异常是在 OOP 上下文中使用的更高级的结构,可让开发人员更灵活地决定是否需要停止脚本,如果需要,以何种方式,向用户显示什么输出等。
异常比这要复杂一些,因此您可能应该先用一些 OOP 记录自己,或者就此阅读 zend 框架,您将了解什么是异常。
不过,对于简单的东西,您总是可以使用 exit (或 die,这是同一件事)。
我希望这会有所帮助,斯拉夫语
1 例外的主要优点是什么?
主要优点是:
2 我可以用 die() 控制我的错误吗?
我几乎不会称之为控制,我会称之为放弃实际处理错误。在我的项目中,没有一点是die()
真正用户友好的,所有这些die('...some error condition...');
PHP 代码示例恕我直言,仅适用于开发中的项目。在生产中,您希望您的用户能够以最简单的方式继续他们的任务/程序,所以“再试一次”(如果不太可能再次遇到错误条件),“抱歉,这不起作用' / 其他类型的消息、表单/页面都更可取die()
。