如果函数调用中缺少参数,如何抑制错误?

时间:2010-10-07 10:33:26

标签: php

我做了这样的函数(不需要在这里编写整个函数):

public function selectNode($from, $attributes = null, $childs = null)

当然,如果我这样称呼它:

$node->selectNode();

参数$from未初始化,然后出现警告错误。 我知道你可以通过@$node->selectNode();来抑制错误@或类似的错误。

但是,我想自己处理它。 如果可能的话,我该怎么做?

我找到的唯一方法就是像public function selectNode($from = null, $attributes = null, $childs = null)一样初始化它,但这并没有说清楚($ from不像其他选项那样)。

(当然,这个函数,这里只是一个例子。它可以扩展到其他函数)

5 个答案:

答案 0 :(得分:5)

为什么你会错过所需的参数?它不是文件或外部变量!只需尝试调用此脚本,您就会收到此错误。这就像解析错误。这里要处理什么? 这是开发阶段的错误。它只需要纠正,而不是处理。

无论如何,你做错了。

永远不要在代码中添加故意错误。

语言错误报告机制用于处理意外错误,而非故意错误 如果您预计会出现错误 - 请自行处理。不要让PHP引发错误 所以,把它$from = null,,是的。然后随意处理这个null。

答案 1 :(得分:4)

当然如果不需要$ from参数,为其分配一个默认变量,因此它是可选的,然后根据此进行检查。

在引用它之前检查代码中的 isset 是否非常优雅,并且在参数中提供null作为默认值,isset将返回 false 来自空值。

答案 2 :(得分:2)

我猜你在php.ini中将display_errors设置为on,现在这些警告会弹出你的屏幕,你不想看到它们突然冒出来了?如果是这种情况,那么改变你的php.ini:

display_errors = Off
log_errors = On
error_log = /path/to/php-error.log

错误将记录到您在error_log中指定的文件中,并且不再显示在屏幕上。

答案 3 :(得分:1)

您可以使用try-catch block自行处理错误。

try {
  $node->selectNode();
}
catch (Exception $e){
  echo $e; // do whatever you like here with error info $e, if you leave the parenthesis empty here nothing is done and the error message is suppressed
}

答案 4 :(得分:0)

您是否正在寻找以下(或其中一种变体)?

<?php error_reporting(0); ?>