gpt4 book ai didi

php - 什么时候错误检查太多了?

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:41:51 24 4
gpt4 key购买 nike

在我学习 PHP 的过程中,我一直在努力阅读有关错误报告和处理的最佳实践,但是每个人的说法各不相同,我一直在努力想出一种清晰简洁的方法来处理我的错误应用程序。我对可能出错的事情使用异常,但在大多数情况下,我很难理解异常是否应该终止应用程序并显示错误页面,或者只是被捕获并静默处理。

我似乎无法理解的是,是否有太多报道这样的事情?每次你调用一个函数时,都可能出现可怕的错误,这意味着如果你要确认每一个函数调用,你将不得不用 if 语句填充页面并计算出一个失败可能对其余部分产生的影响。是否有简明的错误报告文档或想法可以为我解决这个问题?有最佳实践吗?良好错误处理的最佳示例是什么?

目前我在做以下事情:

  • 将重要的事件结果添加到数组中,以便在发生 fatal error 时记录并通过电子邮件发送给我
  • 显示 fatal error 的抽象/一般错误。
  • 对可能失败的情况使用异常(exception)
  • 在开发环境中打开错误报告并在实时环境中关闭
  • 验证所有用户输入数据
  • 清理无效的用户输入
  • 在不提供利用平台的情况下向用户显示简洁、信息丰富的错误消息。

最佳答案

异常是您唯一不理解的东西 恕我直言:异常意味着不受您的控制,意味着要从它们抛出的范围之外被捕获和处理。try block 有一个特定的限制: 它应该包含相关的操作。例如,以数据库 try catch block 为例:

$array = array();
try {
// connect throws exception on fail
// query throws exception on fail
// fetch results into $array
} catch (...) {
$array[0]['default'] = 'me';
$array[0]['default2'] = ...;
...
}

如您所见,我将每个与数据库相关的函数都放在 try block 中。如果连接失败,查询将不会执行,因为如果没有连接,它们将毫无意义。如果查询失败,则跳过获取,因为不获取任何结果是没有意义的。如果出现任何问题,我有一个空的 $array 来处理:例如,这样我就可以用默认数据填充它。

使用如下异常:

$array = array();
try {
if (!file_exists('file.php')) throw new Exception('file does not exists');
include('file.php');
} catch (Exception $e) {
trigger_error($e->getMessage());
}

没有意义。它只是一个更长的版本:

if (!file_exists('file.php')) trigger_error('file does not exists');
include('file.php');

关于php - 什么时候错误检查太多了?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14500176/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com