📜  PHP中的错误类型

📅  最后修改于: 2020-09-29 07:23:34             🧑  作者: Mango

PHP中的错误类型

基本上,错误是程序中的错误,可能是由于编写错误的语法或错误的代码引起的。浏览器上将显示一条错误消息,其中包含文件名以及位置,描述错误的消息以及发生错误的行号。

通常有不同类型的错误。在PHP中,主要考虑四种类型的错误:

  • 语法错误或解析错误
  • 致命错误
  • 警告错误
  • 通知错误

我们将通过示例详细讨论所有这些错误:

语法错误或解析错误

语法错误是源代码语法中的错误,由于程序员缺乏关注或知识,可以由程序员来完成。也称为解析错误。编译器用于在编译时捕获语法错误。

注意:语法错误停止执行代码。

这些错误可能是由于以下常见原因而发生的,例如未加引号,缺少分号,括号过多或缺失,或未加括号等。在编译程序时,编译器可能会捕获语法错误。它给出了解析错误或语法错误消息。

示例1:缺少分号

";
echo "Bob: I'm Bob. How are you?"
echo "Alex: I'm good! and you?";
echo "Bob: I'm also good";
?>

输出量

Parse error: syntax error, unexpected 'echo' (T_ECHO), expecting ',' or ';' in C:\xampp\htdocs\program\fatalerror.php on line 5

说明:在以上示例中,第5行缺少分号(;)。因此,它生成了一个解析错误,并在浏览器中显示了错误消息,如输出所示。

示例2:缺少美元符号


输出量

Parse error: syntax error, unexpected '=' in C:\xampp\htdocs\program\fatalerror.php on line 5

说明:在上面的示例中,第5行缺少美元($)符号。因此,它生成了一个解析错误,并在浏览器中显示了错误消息,如输出所示。

致命错误

致命错误是另一种错误,由于使用未定义的函数而发生。PHP编译器理解PHP代码,但也可以识别未定义的函数。这意味着在不提供其定义的情况下调用函数时,PHP编译器会生成致命错误。

在未定义函数的情况下调用该函数会生成致命错误。请参阅以下包含致命错误的示例-

示例:调用未定义的函数


在上面的代码中,我们定义了add()函数,但调用了另一个函数,即catch_fatal_error()。因此,它会产生致命错误,并在浏览器上显示错误消息,如下所示:

输出量

Fatal error: Uncaught Error: Call to undefined function catch_fatal_error() in C:\xampp\htdocs\program\fatalerror.php:15 Stack trace: #0 {main} thrown in C:\xampp\htdocs\program\fatalerror.php on line 13

警告错误

当程序员尝试包含丢失的文件时,将生成警告。PHP函数调用不存在的丢失文件。警告错误不会停止/阻止程序的执行。

产生警告错误的主要原因是将错误数量的参数传递给函数或包含丢失的文件。

示例:包括丢失的文件


输出量

Warning Error:
Warning: include(jtp.php): failed to open stream: No such file or directory in C:\xampp\htdocs\program\fatalerror.php on line 7

Warning: include(): Failed opening 'jtp.php' for inclusion (include_path='C:\xampp\php\PEAR') in C:\xampp\htdocs\program\fatalerror.php on line 7

说明:在此示例中,我们尝试在程序中包含一个不存在的文件。因此,它生成警告并显示错误消息。

通知错误

注意错误与警告错误相同。当程序包含错误内容时,将发生通知错误。但是它允许/继续执行程序,但出现通知错误。注意错误不会阻止代码的执行。例如-访问未定义的变量。

通常,当我们尝试使用或访问未定义的变量时,会发生通知错误。请参阅以下示例以了解它-

示例2:访问未定义的变量


输出量

Airtel
Notice: Undefined variable: automobile in C:\xampp\htdocs\program\fatalerror.php on line 6

说明:在上面的示例中,我们试图使用未定义的变量$automobile。因此,它生成一个通知“Undefinedvariable”,并继续执行程序。