当前位置: 首页 > 面试题库 >

为什么要修复E_NOTICE错误?

陶成化
2023-03-14
问题内容

作为开发人员,我与E_NOTICE一起工作。不过最近,有人问我为什么应该修复E_NOTICE错误。我能提出的唯一理由是纠正这些问题的最佳实践。

还有其他人有任何理由证明纠正这些问题所花费的额外时间/成本吗?

更具体地说,如果代码已经起作用,为什么经理应该花钱修复这些问题?


问题答案:

摘要

在PHP运行时配置文件给你一些想法,为什么:

在开发过程中启用E_NOTICE有一些好处。

出于调试目的:NOTICE消息将警告您代码中可能存在的错误。例如,警告使用未分配的值。查找输入错误并节省调试时间非常有用。

NOTICE消息将警告您样式不良。例如,最好将$ arr [item]编写为$ arr [‘item’],因为PHP试图将“
item”视为常量。如果不是常量,PHP会假定它是数组的字符串索引。

这是每个的更详细的说明…

1.检测打字错误

E_NOTICE错误的主要原因是错别字。

示例-notice.php

<?php
$username = 'joe';        // in real life this would be from $_SESSION

// and then much further down in the code...

if ($usernmae) {            // typo, $usernmae expands to null
    echo "Logged in";
}
else {
    echo "Please log in...";
}
?>

没有E_NOTICE的输出

Please log in...

错误!你不是那个意思!

用E_NOTICE输出

Notice: Undefined variable: usernmae in /home/user/notice.php on line 3
Please log in...

在PHP中,不存在的变量将返回null而不是导致错误,并且可能导致代码的行为与预期不同,因此最好注意E_NOTICE警告。

2.检测歧义索引

它还警告您可能会改变的数组索引,例如

示例-今天的代码看起来像这样

<?php

$arr = array();
$arr['username'] = 'fred';

// then further down

echo $arr[username];
?>

没有E_NOTICE的输出

fred

示例-明天您将包括图书馆

<?php
// tomorrow someone adds this
include_once('somelib.php');

$arr = array();
$arr['username'] = 'fred';

// then further down

echo $arr[username];
?>

库执行以下操作:

<?php
define("username", "Mary");
?>

新的输出

空的,因为现在它扩展为:

echo $arr["Mary"];

并没有关键Mary$arr

用E_NOTICE输出

如果只有程序E_NOTICE使用,PHP会显示一条错误消息:

Notice: Use of undefined constant username - assumed 'username' in /home/user/example2.php on line 8
fred

3.最佳原因

如果您没有解决所有E_NOTICE您认为不是错误的错误,则您可能会变得自满,并开始忽略消息,然后有一天发生真正的错误,您将不会注意到它。



 类似资料:
  • 长话短说,我在看西蒙·佩顿·琼斯的演讲,在21:41的时候,他引用了一句话: 我当时正在处理一个bug,很沮丧,在ghci中输入了“修复错误”… 我试过了。 结果: 一开始我只是想,这个到底做了什么? 所以我看了一些类型 因此 但很明显,这仍然没有告诉我多少结果。 然而,更奇怪的是,即使是或的输出也和上面的一样是一个永不间断的输出(除了后者的输出,,缺少首字母)。 我在看什么? 需要明确的是,目前

  • 我不明白try and get中错误处理的含义。(C#)在我的在线课程中使用了以下示例: 这是一个非常简单的例子,但是我为什么要这么做呢? 我是个新手。。。我正在学习编写C#。。。但我试图通过这种方式学习,在最好的情况下,根本不会发生错误。 我为什么要抓住这样的例外而不是

  • 在一个create-react-app typescript项目中,我试图编写这个只是为了快速测试一些东西: 但它给了我以下错误,有一个红色的波浪线: 当提供'-隔离模块'标志时,所有文件都必须是模块。 但是,如果我将文件更改为以下内容,那么一切显然都很好(当然除了未使用的导入): 为什么?这里发生了什么事?< code> - isolatedModules实际上是什么意思/做什么?

  • 我需要将12小时的时间转换为24小时的格式。 我现在已经把12小时的时间硬编码了,以使事情更简单。 我的逻辑:输入sting 07:05:45PM提取最后2个字符。如果AM check为前两个字符,则为12。。如果是,则将其设置为00,否则按原样输出,如果PM检查前两位数字是否为12。。如果是,请保持原样,如果不是,则在前2位加上12 总线错误:10是我运行代码得到的

  • 问题内容: 我见过人们在HTML元素上应用CSS属性。 他们为什么这样做,并且可以解决什么错误? 问题答案: 这提供了一个内部属性,在Internet Explorer 7及更低版本中被称为。 可以通过给元素“布局”来解决许多Internet Explorer的呈现不一致问题。在本文中,作者重点研究了这一复杂问题的某些方面。 “布局”是IE / Win专有的概念,它确定元素如何绘制和绑定其内容,与

  • 我有一些代码,当我运行它时会产生一个错误,说: NoSuchMethod:对null调用了方法“XYZ” 这意味着什么?我该如何修复它?