首頁 後端開發 php教程 PHP错误处理函数_php实例

PHP错误处理函数_php实例

Jun 07, 2016 pm 05:08 PM
php錯誤處理 php錯誤處理函數

在 PHP 中,默认的错误处理很简单。一条错误消息会被发送到浏览器,这条消息带有文件名、行号以及描述错误的消息。

PHP 错误处理

在创建脚本和 Web 应用程序时,错误处理是一个重要的部分。如果您的代码缺少错误检测编码,那么程序看上去很不专业,也为安全风险敞开了大门。

本教程介绍了 PHP 中一些最为重要的错误检测方法。

我们将为您讲解不同的错误处理方法:

简单的 "die()" 语句

自定义错误和错误触发器

错误报告

基本的错误处理:使用 die() 函数

第一个实例展示了一个打开文本文件的简单脚本:

<&#63;php
$file=fopen("welcome.txt","r");
&#63;>
登入後複製

如果文件不存在,您会得到类似这样的错误:

Warning: fopen(welcome.txt) [function.fopen]: failed to open stream:
No such file or directory in C:webfoldertest.php on line 2

为了避免用户得到类似上面的错误消息,我们在访问文件之前检测该文件是否存在:

<&#63;php
if(!file_exists("welcome.txt"))
{
die("File not found");
}
else
{
$file=fopen("welcome.txt","r");
}
&#63;>
登入後複製

现在,如果文件不存在,您会得到类似这样的错误消息:

File not found

相比之前的代码,上面的代码更有效,这是由于它采用了一个简单的错误处理机制在错误之后终止了脚本。

然而,简单地终止脚本并不总是恰当的方式。让我们研究一下用于处理错误的备选的 PHP 函数。

创建自定义错误处理器

创建一个自定义的错误处理器非常简单。我们很简单地创建了一个专用函数,可以在 PHP 中发生错误时调用该函数。

该函数必须有能力处理至少两个参数 (error level 和 error message),但是可以接受最多五个参数(可选的:file, line-number 和 error context):

语法

error_function(error_level,error_message,error_file,error_line,error_context)

参数 描述
error_level 必需。为用户定义的错误规定错误报告级别。必须是一个数字。参见下面的表格:错误报告级别。
error_message 必需。为用户定义的错误规定错误消息。
error_file 可选。规定错误发生的文件名。
error_line 可选。规定错误发生的行号。
error_context 可选。规定一个数组,包含了当错误发生时在用的每个变量以及它们的值。

错误报告级别

这些错误报告级别是用户自定义的错误处理程序处理的不同类型的错误:

现在,让我们创建一个处理错误的函数:

function customError($errno, $errstr)
{
echo "<b>Error:</b> [$errno] $errstr<br>";
echo "Ending Script";
die();
}
登入後複製

上面的代码是一个简单的错误处理函数。当它被触发时,它会取得错误级别和错误消息。然后它会输出错误级别和消息,并终止脚本。

现在,我们已经创建了一个错误处理函数,我们需要确定在何时触发该函数。

常量 描述
2 E_WARNING 非致命的 run-time 错误。不暂停脚本执行。
8 E_NOTICE run-time 通知。在脚本发现可能有错误时发生,但也可能在脚本正常运行时发生。
256 E_USER_ERROR 致命的用户生成的错误。这类似于程序员使用 PHP 函数 trigger_error() 设置的 E_ERROR。
512 E_USER_WARNING 非致命的用户生成的警告。这类似于程序员使用 PHP 函数 trigger_error() 设置的 E_WARNING。
1024 E_USER_NOTICE 用户生成的通知。这类似于程序员使用 PHP 函数 trigger_error() 设置的 E_NOTICE。
4096 E_RECOVERABLE_ERROR 可捕获的致命错误。类似 E_ERROR,但可被用户定义的处理程序捕获。(参见 set_error_handler())
8191 E_ALL 所有错误和警告。(在 PHP 5.4 中,E_STRICT 成为 E_ALL 的一部分)

设置错误处理程序

PHP 的默认错误处理程序是内建的错误处理程序。我们打算把上面的函数改造为脚本运行期间的默认错误处理程序。

可以修改错误处理程序,使其仅应用到某些错误,这样脚本就能以不同的方式来处理不同的错误。然而,在本例中,我们打算针对所有错误来使用我们自定义的错误处理程序:

set_error_handler("customError");
登入後複製

由于我们希望我们的自定义函数能处理所有错误,set_error_handler() 仅需要一个参数,可以添加第二个参数来规定错误级别。

实例

通过尝试输出不存在的变量,来测试这个错误处理程序:

<?php
//error handler function
function customError($errno, $errstr)
{
echo "Error: [$errno] $errstr";
}
//set error handler
set_error_handler("customError");
//trigger error
echo($test);
?>
登入後複製

以上代码的输出如下所示:

Error: [8] Undefined variable: test

触发错误

在脚本中用户输入数据的位置,当用户的输入无效时触发错误是很有用的。在 PHP 中,这个任务由 trigger_error() 函数完成。

实例

在本例中,如果 "test" 变量大于 "1",就会发生错误:

<&#63;php
$test=2;
if ($test>1)
{
trigger_error("Value must be 1 or below");
}
&#63;>
登入後複製

以上代码的输出如下所示:

Notice: Value must be 1 or below
in C:webfoldertest.php on line 6

您可以在脚本中任何位置触发错误,通过添加的第二个参数,您能够规定所触发的错误级别。

可能的错误类型:

E_USER_ERROR - 致命的用户生成的 run-time 错误。错误无法恢复。脚本执行被中断。
E_USER_WARNING - 非致命的用户生成的 run-time 警告。脚本执行不被中断。
E_USER_NOTICE - 默认。用户生成的 run-time 通知。在脚本发现可能有错误时发生,但也可能在脚本正常运行时发生。

在本例中,如果 "test" 变量大于 "1",则发生 E_USER_WARNING 错误。如果发生了 E_USER_WARNING,我们将使用我们自定义的错误处理程序并结束脚本:

<?php
//error handler function
function customError($errno, $errstr)
{
echo "<b>Error:</b> [$errno] $errstr<br>";
echo "Ending Script";
die();
}
//set error handler
set_error_handler("customError",E_USER_WARNING);
//trigger error
$test=2;
if ($test>1)
{
trigger_error("Value must be 1 or below",E_USER_WARNING);
}
?>
登入後複製

以上代码的输出如下所示:

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

现在,我们已经学习了如何创建自己的 error,以及如何触发它们,接下来我们研究一下错误记录。

错误记录

在默认的情况下,根据在 php.ini 中的 error_log 配置,PHP 向服务器的记录系统或文件发送错误记录。通过使用 error_log() 函数,您可以向指定的文件或远程目的地发送错误记录。

通过电子邮件向您自己发送错误消息,是一种获得指定错误的通知的好办法。

通过 E-Mail 发送错误消息

在下面的例子中,如果特定的错误发生,我们将发送带有错误消息的电子邮件,并结束脚本:

<&#63;php
//error handler function
function customError($errno, $errstr)
{
echo "<b>Error:</b> [$errno] $errstr<br>";
echo "Webmaster has been notified";
error_log("Error: [$errno] $errstr",1,
"someone@example.com","From: webmaster@example.com");
}
//set error handler
set_error_handler("customError",E_USER_WARNING);
//trigger error
$test=2;
if ($test>1)
{
trigger_error("Value must be 1 or below",E_USER_WARNING);
}
&#63;>
登入後複製

以上代码的输出如下所示:

Error: [512] Value must be 1 or below
Webmaster has been notified

接收自以上代码的邮件如下所示:

Error: [512] Value must be 1 or below

这个方法不适合所有的错误。常规错误应当通过使用默认的 PHP 记录系统在服务器上进行记录。

以上内容是小编给大家介绍的PHP错误处理函数,希望对大家以上帮助!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

<🎜>:泡泡膠模擬器無窮大 - 如何獲取和使用皇家鑰匙
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系統,解釋
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1664
14
CakePHP 教程
1423
52
Laravel 教程
1318
25
PHP教程
1269
29
C# 教程
1248
24
PHP檔案操作錯誤的處理方法及產生對應報錯訊息 PHP檔案操作錯誤的處理方法及產生對應報錯訊息 Aug 08, 2023 am 10:30 AM

PHP檔案操作錯誤的處理方法及產生對應報錯資訊在使用PHP進行檔案操作時,可能會遇到各種錯誤,如找不到檔案、權限錯誤等。這些錯誤可能會導致程式無法正常執行,因此合理處理檔案操作錯誤是非常重要的。本文將介紹PHP檔案操作錯誤的處理方法,並展示如何產生對應的報錯資訊。一、錯誤處理方法使用錯誤控制運算子PHP提供了錯誤控制運算子“@”,可以在執行可能出錯的語句前添

如何處理 PHP 中的語法錯誤 如何處理 PHP 中的語法錯誤 Aug 07, 2023 pm 04:46 PM

如何處理PHP中的語法錯誤引言:在開發PHP程式時,經常會遇到語法錯誤的情況。語法錯誤是由於程式碼違反了PHP語法規則所引起的,它會導致腳本無法正確執行。本文將介紹一些處理PHP語法錯誤的方法,並提供對應的程式碼範例。使用錯誤提示功能PHP提供了豐富的錯誤提示功能,在開發過程中可以開啟這些提示,以便及時發現並解決語法錯誤。可以透過設定erro

PHP中的錯誤處理機制是什麼? PHP中的錯誤處理機制是什麼? May 12, 2023 pm 07:31 PM

PHP是一種流行且強大的伺服器端程式語言,可以用來開發各種Web應用程式。就像其他程式語言一樣,PHP也有可能會出現錯誤和異常。這些錯誤和異常可能由各種原因引起,如程式錯誤、伺服器錯誤、使用者輸入錯誤等等。為了確保程式的運作穩定性和可靠性,PHP提供了一套完整的錯誤處理機制。 PHP錯誤處理機制的基本概念是:當發生錯誤時,程式會停止執行並輸出錯誤訊息。我們可

解決PHP報錯:呼叫未定義的類別方法 解決PHP報錯:呼叫未定義的類別方法 Aug 18, 2023 pm 05:09 PM

解決PHP報錯:呼叫未定義的類別方法在進行PHP開發過程中,常會遇到呼叫未定義的類別方法的報錯。這種情況一般是由於程式碼編寫不規範或使用的類別方法不存在而導致的。以下我們將介紹一些解決該問題的常見方法。檢查類別方法是否存在當報錯提示呼叫未定義的類別方法時,首先要檢查該方法是否存在於對應的類別中。透過使用method_exists()函數可以檢查某個類別是否存在某個方法。

如何進行PHP後端功能開發的錯誤處理? 如何進行PHP後端功能開發的錯誤處理? Aug 04, 2023 pm 01:19 PM

如何進行PHP後端功能開發的錯誤處理?身為PHP後端開發人員,在開發過程中,我們經常會遇到各種錯誤。良好的錯誤處理是確保系統穩定性和使用者體驗的重要因素。在本文中,我將分享一些如何進行PHP後端功能開發的錯誤處理的方法和技巧,並提供相應的程式碼範例。設定錯誤報告等級PHP提供了一個錯誤報告等級參數,可以透過設定來定義要報告的錯誤類型。使用error_repo

PHP 錯誤處理:最佳實務與建議 PHP 錯誤處理:最佳實務與建議 Aug 07, 2023 pm 12:25 PM

PHP錯誤處理:最佳實務和建議在編寫PHP程式碼時,錯誤處理是一項非常重要的任務。如果不正確地處理錯誤,就會導致應用程式中的漏洞和安全性問題。同時,良好的錯誤處理也有助於提高程式碼的可維護性和可擴展性。本文將介紹一些PHP錯誤處理的最佳實踐和建議,並提供一些程式碼範例。使用異常處理在PHP中,異常是用來處理運行時錯誤的機制。透過使用異常,可以將錯誤

如何處理PHP檔案路徑錯誤並產生對應的報錯訊息 如何處理PHP檔案路徑錯誤並產生對應的報錯訊息 Aug 06, 2023 am 10:12 AM

如何處理PHP檔案路徑錯誤並產生對應的報錯資訊在開發和維護PHP應用程式時,經常會遇到檔案路徑錯誤的情況。當引用一個不存在的檔案或指定了錯誤的路徑時,在PHP中會拋出一個致命錯誤,導致應用程式無法正常運作。為了更好地偵錯和處理這種情況,我們可以透過以下方式來處理PHP檔案路徑錯誤,並產生對應的報錯資訊。使用絕對路徑在引用檔案時,盡量使用絕對路徑而不是相對路徑

PHP錯誤處理方法及產生相關報錯資訊的實務指南 PHP錯誤處理方法及產生相關報錯資訊的實務指南 Aug 06, 2023 pm 06:30 PM

PHP錯誤處理方法及產生相關報錯訊息的實務指南導語:在開發過程中,出現錯誤是常有的事情。良好的錯誤處理和準確的報錯資訊對於快速診斷和解決問題至關重要。 PHP提供了豐富的錯誤處理方法和產生報錯資訊的功能,本文將介紹一些常用的PHP錯誤處理方法,並結合程式碼範例進行實作指南。一、錯誤處理方法錯誤報告等級設定PHP可以透過設定錯誤報告等級來控制錯誤的顯示程度。常用的

See all articles