搜尋
首頁後端開發PHP問題php常見的錯誤類型有哪些

php常見的錯誤類型有哪些

Apr 24, 2023 pm 04:10 PM
php 錯誤類型

php中常見的錯誤類型有:1、Parse error類型,表示解析錯誤或語法錯誤;2、Fatalerror類型,表示致命錯誤;3、Warning類型,表示警告錯誤;4、Notice類型,表示注意錯誤;5、Deprecated類型,表示最低等級的錯誤。

php常見的錯誤類型有哪些

本教學作業系統:Windows10系統、PHP8.1版、Dell G3電腦。

一、PHP錯誤類型

PHP錯誤等級

Parse error > Fatal Error > Waning > Notice > Deprecated

1、解析錯誤或語法錯誤(Parse error)

語法錯誤是程式設計中最容易碰到也是最容易解決的錯誤,例如:遺漏一個分號時就會顯示錯誤訊息。這種錯誤會停止程式的執行,並顯示出錯訊息。我們可以根據錯誤訊息改正程序,然後重新執行。

【範例】下面透過簡單的程式碼示範常見語法錯誤以及相關的錯誤訊息。

<?php
    $a = 1;
    $b = 2;
    $c = $a + $b
    echo ;
?>

上面程式碼中第4 行末尾省略了;,所以運行上面的程式碼會顯示如下錯誤訊息:

Parse error: syntax error, unexpected &#39;echo&#39; (T_ECHO) in D:\WWW\index.php on line 5

從上面的範例和運行結果可以看出,語法錯誤會阻止程式繼續向下執行。只有解決了這些錯誤後程式才可以順利執行。

2、致命錯誤(Fatal error):

這是PHP編譯器理解PHP程式碼但它辨識未宣告的函數的錯誤型別。這意味著在沒有函數定義的情況下呼叫函數。

程式直接報錯,需要修改程式碼! ! !中斷程式執行,可使用register_shutdown_function()函數在程式終止前觸發一個函數,例如

<?php 
function add($x, $y) { 
    $sum = $x + $y; 
    echo "sum = " . $sum; 
}
$x = 0; 
$y = 20;
add($x, $y); 
diff($x, $y); 
?>

php常見的錯誤類型有哪些

說明:在第10行中,呼叫了函數diff(),但函數diff()沒有的宣告定義,所以它給了錯誤。

3、警告錯誤(Warning):

程式的語法沒有錯誤,但是在執行的過程中,PHP會發現程式有些不合理的地方,從而提示出警告訊息,但程式會繼續向下執行。

範例:把0當作除數時,會造成程式運作錯誤並輸出錯誤訊息。

<?php
    $a = 1;
    $b = 0;
    $c = $a / $b;
    echo "$a / $b = $c";
?>

錯誤:

php常見的錯誤類型有哪些

4、注意錯誤(Notice):

它類似於警告錯誤,這意味著該程式包含錯誤,但它允許執行腳本。在使用一些未定義變數、常數或陣列key沒有加引號的時候會出現,程式繼續執行

<?php  
header("content-type:text/html;charset=utf-8");
$x = "PHP中文网"; 
echo $x; 
echo $y; 
?>

說明:此程式使用未宣告的變數 $y,因此它給出了錯誤訊息。

5、 最低等級的錯誤(Deprecated,不推薦,不建議)

使用一些過期函數的時候會出現,程式繼續執行。

二、PHP錯誤配置

除了在腳本裡設置,還可以在php.ini設定檔裡配置

error_reporting = E_ALL&~E_NOTICE; //设置错误报告级别
display_errors = 1; //开发环境开启,生产环境关闭

三、PHP異常

PHP的例外是PHP5的新增特性,與JAVA/C#的例外不同,PHP異常需要手動拋出throw new Exception,而不是系統自動拋出。

PHP錯誤與異常的區別,他們是2個不同的概念,但有共同的地方:

如果異常不捕獲處理,程式將會終止,並報出Fatal Error錯誤,看到這裡大家就會覺得異常是不是錯誤的一種,這是一種錯覺,但這樣理解也可以。但異常捕獲後程式可以繼續執行,而真正的Fatal Error錯誤出現後程式就必須終止。

異常可以使用try{}catch(){}來捕獲捕獲,捕獲之後後續程式碼可以繼續執行;而錯誤是無法使用try{}catch(){ }捕獲的。

如果拋出了異常,就必須捕獲它,否則程式終止執行。

四、PHP異常與錯誤的拋出

異常拋出:throw new Exception('Some Error Message');

錯誤拋出:trigger_error();

#trigger_error()觸發的錯誤不會被try-catch異常捕獲語句捕獲

五、PHP錯誤處理

set_error_handler()

只能處理Deprecated、Notice、Waning這三種層級錯誤,而且處理後,腳本將會繼續執行發生錯誤的後一行。

register_shutdown_function()

這個方法是腳本結束前的最後一個回呼函數,所以無論是die()/錯誤(異常)/還是腳本正常結束都會呼叫

#六、PHP異常處理

set_exception_handler()

設定預設的異常處理程序,有try/catch捕獲的話這個函數就不會執行,反之就會執行,而且執行的話,腳本將不會繼續執行發生異常的後一行程式碼,程式馬上中止

set_exception_handler()注意事項

set_exception_handler(“myException”) 不仅可以接受函数名,还可以接受类的方法(公开的静态方法 及 公开的非静态方法 都可以),但需要以 数组形式 传递,数组的第一值为“类名”,第二个参数为“方法名”,如下代码所示:

<?php
class App{
    function myException($exception) {
        echo "<b>Exception:</b> " , $exception->getMessage();
    }
}
set_exception_handler(array(&#39;App&#39;,&#39;myException&#39;));
 
throw new Exception(&#39;Uncaught Exception occurred&#39;);
?>

七、PHP7 异常处理的大变化

在PHP7之前,Deprecated、Notice、Waning这类错误是可以捕获的(使用set_error_handler()函数),而Fatel Error无法捕获的。

在PHP7之后,出现了一个异常与错误通用的接口Throwable,Exception类与Error类都实现了该接口,导致Error类或Error类的派生类的错误对象(大部分Fatel Error,而之前三类错误不变)也可以像Exception一样被捕获(2种捕获方法:1、try/catch 2、set_exception_handler())。

以上是php常見的錯誤類型有哪些的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
酸與基本數據庫:差異和何時使用。酸與基本數據庫:差異和何時使用。Mar 26, 2025 pm 04:19 PM

本文比較了酸和基本數據庫模型,詳細介紹了它們的特徵和適當的用例。酸優先確定數據完整性和一致性,適合財務和電子商務應用程序,而基礎則側重於可用性和

PHP安全文件上傳:防止與文件相關的漏洞。PHP安全文件上傳:防止與文件相關的漏洞。Mar 26, 2025 pm 04:18 PM

本文討論了確保PHP文件上傳的確保,以防止諸如代碼注入之類的漏洞。它專注於文件類型驗證,安全存儲和錯誤處理以增強應用程序安全性。

PHP輸入驗證:最佳實踐。PHP輸入驗證:最佳實踐。Mar 26, 2025 pm 04:17 PM

文章討論了PHP輸入驗證以增強安全性的最佳實踐,重點是使用內置功能,白名單方法和服務器端驗證等技術。

PHP API率限制:實施策略。PHP API率限制:實施策略。Mar 26, 2025 pm 04:16 PM

本文討論了在PHP中實施API速率限制的策略,包括諸如令牌桶和漏水桶等算法,以及使用Symfony/Rate-limimiter之類的庫。它還涵蓋監視,動態調整速率限制和手

php密碼哈希:password_hash和password_verify。php密碼哈希:password_hash和password_verify。Mar 26, 2025 pm 04:15 PM

本文討論了使用password_hash和pyspasswify在PHP中使用密碼的好處。主要論點是,這些功能通過自動鹽,強大的哈希算法和SECH來增強密碼保護

OWASP前10 php:描述並減輕常見漏洞。OWASP前10 php:描述並減輕常見漏洞。Mar 26, 2025 pm 04:13 PM

本文討論了OWASP在PHP和緩解策略中的十大漏洞。關鍵問題包括注射,驗證損壞和XSS,並提供用於監視和保護PHP應用程序的推薦工具。

PHP XSS預防:如何預防XSS。PHP XSS預防:如何預防XSS。Mar 26, 2025 pm 04:12 PM

本文討論了防止PHP中XSS攻擊的策略,專注於輸入消毒,輸出編碼以及使用安全增強的庫和框架。

PHP接口與抽像類:何時使用。PHP接口與抽像類:何時使用。Mar 26, 2025 pm 04:11 PM

本文討論了PHP中接口和抽像類的使用,重點是何時使用。界面定義了無實施的合同,適用於無關類和多重繼承。摘要類提供常見功能

See all articles

熱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

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

熱工具

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強大的PHP整合開發環境

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

將Eclipse與SAP NetWeaver應用伺服器整合。

DVWA

DVWA

Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

VSCode Windows 64位元 下載

VSCode Windows 64位元 下載

微軟推出的免費、功能強大的一款IDE編輯器

SublimeText3 Mac版

SublimeText3 Mac版

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