PHP 中的错误类型

17 Mar 2025 | 4 分钟阅读

基本上,错误是程序中的一个失误,可能是由于编写了不正确的语法或不正确的代码造成的。浏览器上会显示一条错误消息,其中包含文件名、位置、描述错误的 संदेश 以及发生错误的行号。

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

  1. 语法错误或解析错误
  2. 致命错误
  3. 警告错误
  4. 注意错误

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

语法错误或解析错误

语法错误是源代码语法中的一个错误,这可能是由于程序员粗心或知识不足造成的。它也称为 **解析错误**。编译器用于在编译时捕获语法错误。

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

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

示例 1:缺少分号

输出

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**。因此,它生成了一个“**未定义变量**”的注意,并继续执行程序。