忽略非致命错误是一种好习惯吗?

时间:2015-01-15 22:47:17

标签: php

当我学习PHP时,我被教导使我的代码没有错误,但仍然隐藏生产代码中的错误以确保干净的用户体验。

我最近参与了一些项目,其中原作者采取了留下错误和警告的方法,甚至利用它们来实现某些目标,而不是在没有它的情况下编写代码。

例如,代码如下所示:

$numm = 0;
while($numm < 10){
    $var = "something,".$var;
    $numm++;
}

此代码将在循环中第一次抛出非致命Notice,因为第一次连接不存在$ var。

还有很多其他例子,他们要么忽略错误,要么利用它们(结束循环等),然后将它们隐藏起来。

对我而言,这似乎是不好的做法,但我可能只是强迫症。

3 个答案:

答案 0 :(得分:5)

通知是一个等待发生的错误。我经常使用error_reporting(E_ALL); set运行开发。我想在它们出现问题之前找到它们,而不是简单地忽略这些问题,无论是否存在问题。

答案 1 :(得分:0)

在while循环中设置isset($ var)的要求。

答案 2 :(得分:0)

我一直觉得讨厌的一件事就是:

$var = isset($var) ? "something,".$var : "something,";

当您考虑可能的使用次数时,这一个衬垫将防止错误但不是理想的方式。想象一个返回的关联数组并不总是具有你期望设置的所有键/值。

我对几乎所有应用程序采取的一种方法是创建和使用以下功能:

function rtnVal(&$val, $default = null){
    return isset($val) ? $val : $default;
}

所以在这种情况下,我所要做的就是:

$var = "something,".rtnVal($var);

容易不是吗?如果你不知道,定义

function rtnVal(&$var) { ... }

而不是:

function rtnVal($var) { ... }

(注意&amp;符号)意味着$ var是一个'占位符'(通过引用传递)而不是实际传递。因此,当您使用它时,不必事先设置它。

虽然有一个限制,那就是使用Objects,他们不喜欢通过这种方式通过引用传递,所以对于那些人,我还没有找到更好的解决方案。