PHP 錯誤處理程式

John Wachira 2023年1月30日
  1. 什麼是 PHP 中的錯誤處理
  2. PHP 中 die() 函式的基本錯誤處理
  3. 在 PHP 中建立自定義錯誤處理程式
PHP 錯誤處理程式

在本教程中,我們將介紹 PHP 中的錯誤處理。我們將介紹 PHP 錯誤處理的重要性及其工作原理。

什麼是 PHP 中的錯誤處理

這是識別程式中的錯誤並對其採取行動的過程。PHP 錯誤檢查程式碼將提高你程式的安全性並使其更加專業。

我們將研究的方法包括:

  1. die() 函式的基本錯誤處理。
  2. 自定義錯誤處理。

PHP 中 die() 函式的基本錯誤處理

die() 函式將向網路傳送訊息並退出指令碼。

在下面的示例程式碼中,我們將嘗試開啟根資料夾中不存在的檔案。讓我們看看發生了什麼。

<?php
$file=fopen("sampletutorial.txt","r");
?>

輸出:

Warning: fopen(sampletutorial.txt): Failed to open stream: No such file or directory in C:\xampp\htdocs\projects\New folder\PHP Error Handling\Example code 1.php on line 2

為防止出現此錯誤,我們可以使用 die() 函式列印一條訊息並退出指令碼,如下所示。

<?php
if(file_exists("sampletutorial.txt")) {
  $file = fopen("sampletutorial.txt", "r");
} else {
  die("Error: The file does not exist.");
}
?>

輸出:

Error: The file does not exist.

那好多了。讓我們看看自定義錯誤處理程式。

在 PHP 中建立自定義錯誤處理程式

自定義錯誤處理程式必須至少有兩個引數。

  1. error_level - 這是錯誤報告級別。
  2. error_message - 這是你要列印的訊息。

該函式最多接受五個引數。這些都是:

  1. error_file - 此引數指定有錯誤的檔案。
  2. error_line - 此引數顯示有錯誤的編碼行。
  3. error_context - 顯示所有有錯誤的變數和值。

不同型別的錯誤報告級別:

  1. [1] E_ERROR
  2. [2] E_WARNING
  3. [8] E_NOTICE
  4. [256] E_USER_ERROR
  5. [512] E_USER_WARNING
  6. [1024] E_USER_NOTICE
  7. [2048] E_STRICT
  8. [8191] E_ALL

讓我們建立一個自定義錯誤處理程式。下面的示例程式碼顯示了我們如何建立自定義函式來處理 PHP 中的錯誤。

<?php
function mycustomError($errno, $errstr) {
  echo "<b>Error:</b> [$errno] $errstr<br>";
  echo "Terminating Script";
  die();
}
?>

這就是我們建立自定義錯誤處理程式的方式。接下來是設定錯誤處理程式,如下所示。

<?php
//error handler function
function mycustomError($errno, $errstr) {
  echo "<b>Error:</b> [$errno] $errstr";
}

//set error handler
set_error_handler("mycustomError");

//trigger error
echo($t);
?>

輸出:

Error: [2] Undefined variable $t

由於未設定變數 $t,我們會收到一條錯誤訊息,如輸出所示。

觸發錯誤:

在使用者可以輸入資料的指令碼中觸發錯誤非常重要。這樣,使用者就不會輸入非法命令。

我們在 PHP 中使用 trigger_error() 函式,如下面的示例程式碼所示。

<?php
//error handler function
function mycustomError($errno, $errstr) {
  echo "<b>Error:</b> [$errno] $errstr<br>";
  echo "Terminating Script";
  die();
}

//set error handler
set_error_handler("mycustomError",E_USER_WARNING);

//trigger error
$t = 7;
if ($t>=1) {
  trigger_error("Value entered must be 1 or below",E_USER_WARNING);
}
?>

輸出:

Error: [512] Value entered must be 1 or below
Terminating Script

在上面的示例程式碼中,我們通過將變數 $t 的值設定為 7 來觸發錯誤。當變數 $t 大於 1 時,我們的 trigger_error() 函式被設定。

作者: John Wachira
John Wachira avatar John Wachira avatar

John is a Git and PowerShell geek. He uses his expertise in the version control system to help businesses manage their source code. According to him, Shell scripting is the number one choice for automating the management of systems.

LinkedIn