日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > php >内容正文

php

PHP ERROR_PHP 处理错误函数

發(fā)布時間:2023/12/2 php 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 PHP ERROR_PHP 处理错误函数 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

錯誤級別

Fatal Error:致命錯誤(腳本終止運行)E_ERROR //致命的運行錯誤,錯誤無法恢復,暫停執(zhí)行腳本

E_CORE_ERROR //PHP啟動時初始化過程中的致命錯誤

E_COMPILE_ERROR //編譯時致命性錯,就像由Zend腳本引擎生成了一個E_ERROR

E_USER_ERROR //自定義錯誤消息。像用PHP函數(shù)trigger_error(錯誤類型設置為:E_USER_ERROR)

Parse Error:編譯時解析錯誤,語法錯誤(腳本終止運行)E_PARSE //編譯時的語法解析錯誤

Warning Error:警告錯誤(僅給出提示信息,腳本不終止運行)E_WARNING //運行時警告 (非致命錯誤)。

E_CORE_WARNING //PHP初始化啟動過程中發(fā)生的警告 (非致命錯誤) 。

E_COMPILE_WARNING //編譯警告

E_USER_WARNING //用戶產(chǎn)生的警告信息

Notice Error:通知錯誤(僅給出通知信息,腳本不終止運行)E_NOTICE //運行時通知。表示腳本遇到可能會表現(xiàn)為錯誤的情況.

E_USER_NOTICE //用戶產(chǎn)生的通知信息。

錯誤顯示級別

//錯誤級別

ERROR = E_ERROR | E_CORE_ERROR | E_COMPILE_ERROR | E_USER_ERROR | E_PARSE

error_reporting(E_ALL);//設置異常錯誤顯示等級0為禁止錯誤

error_reporting(0);//禁用錯誤報告

error_reporting(E_ERROR | E_WARNING | E_PARSE);//報告運行時錯誤

error_reporting(E_ALL); //報告所有錯誤

error_reporting(E_ALL~E_NOTICE);//除去提醒處理

Try 和 catch

使用異常的函數(shù)應該位于 "try" 代碼塊內(nèi)。如果沒有觸發(fā)異常,則代碼將照常繼續(xù)執(zhí)行。但是如果異常被觸發(fā),會拋出一個異常。

"catch" 代碼塊會捕獲異常,并創(chuàng)建一個包含異常信息的對象。

try catch 捕捉不到fatal error致命錯誤

只有拋出異常才能被截獲,如果異常拋出了卻沒有被捕捉到,就會產(chǎn)生一個fatal error

父類可以捕獲子類拋出的異常

try{//業(yè)務代碼

}catch(Exception $e){//捕獲異常,輸出錯誤信息

echo ‘Message: ‘ .$e->getMessage();

}

可以自定義異常類,當必須繼承?Exception 類,,捕獲 catch 先寫子類(級別低的),后寫父類(級別高的),try 中可以 嵌套 try{}catch(Exception$e){}

class customException extends Exception{public functionerrorMessage()

{//錯誤信息

$errorMsg = ‘錯誤行號 ‘.$this->getLine().‘ in ‘.$this->getFile().‘: ‘.$this->getMessage().‘ 不是一個合法的 E-Mail 地址‘;return $errorMsg;

}

}$email = "someone@example...com";try{//檢測郵箱

if(filter_var($email, FILTER_VALIDATE_EMAIL) === FALSE)

{//如果是個不合法的郵箱地址,拋出異常

throw new customException($email); //throw - 里規(guī)定如何觸發(fā)異常。每一個 "throw" 必須對應至少一個 "catch"。

}

}catch (customException $e){//輸出錯誤信息

echo $e->errorMessage();

}catch(Exception $e)

{//多個異常,先捕獲子類的,父類放最后

echo $e->getMessage();

}

PHP異常處理函數(shù)

set_error_handler(error_function,error_types)

設置用戶自定義的錯誤處理函數(shù)。該函數(shù)用于創(chuàng)建運行期間的用戶自己的錯誤處理方法。該函數(shù)返回舊的錯誤處理程序,如果失敗則返回 NULL。如果存在該方法,相應的error_reporting()就不能在使用了

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

不僅可以接受函數(shù),還可以接受?類的方法(公開的靜態(tài)方法 及 公開的非靜態(tài)方法 都可以),但需要以?數(shù)組形式?傳遞,數(shù)組的第一值為“類名”,第二個參數(shù)為“方法名”

參數(shù)說明:

error_level

必需的。規(guī)定用戶自定義的錯誤的錯誤報告級別。必須是值數(shù)字。可能的錯誤報告級別詳見下面的表格。

error_message

必需的。規(guī)定用戶自定義的錯誤的錯誤消息。

error_file

可選。規(guī)定發(fā)生錯誤的文件名。

error_line

可選。規(guī)定發(fā)生錯誤的行號。

error_context

可選。規(guī)定指向活躍符號表中發(fā)生錯誤的數(shù)組。換句話說,error_context 將包含一個說明每個變量引發(fā)錯誤的存在范圍的數(shù)組。

error_level??錯誤報告級別

2

E_WARNING

運行時非致命的錯誤。沒有停止執(zhí)行腳本。

8

E_NOTICE

運行時的通知。腳本發(fā)現(xiàn)可能是一個錯誤,但也可能在正常運行腳本時發(fā)生。

256

E_USER_ERROR

用戶生成的致命錯誤。這就如同由程序員使用 PHP 函數(shù) trigger_error() 生成的 E_ERROR。

512

E_USER_WARNING

用戶生成的非致命錯誤。這就如同由程序員使用 PHP 函數(shù) trigger_error() 生成的 E_WARNING。

1024

E_USER_NOTICE

用戶生成的通知。這就如同由程序員使用 PHP 函數(shù) trigger_error() 生成的 E_NOTICE。

4096

E_RECOVERABLE_ERROR

可捕獲的致命錯誤。這就如同一個可以由用戶定義的句柄捕獲的 E_ERROR(見 set_error_handler())。

classApp{//error handler function

function customError($errno, $errstr, $errfile, $errline) {echo "Custom error: [$errno] $errstr
";echo "Error on line $errline in $errfile
";echo "Ending Script";die();

}

}//set error handler

set_error_handler(array("App","customError"));$test=2;//trigger error

if ($test > 1) {trigger_error("A custom error has been triggered");

}

register_shutdown_function(callback_function,parameter)

捕獲PHP的錯誤:Fatal Error、Parse Error等,這個方法是PHP腳本執(zhí)行結(jié)束前最后一個調(diào)用的函數(shù),比如腳本錯誤、die()、exit、異常、正常結(jié)束都會調(diào)用。通過這個函數(shù)就可以在腳本結(jié)束前判斷這次執(zhí)行是否有錯誤產(chǎn)生,這時就要借助于一個函數(shù):error_get_last();這個函數(shù)可以拿到本次執(zhí)行產(chǎn)生的所有錯誤。error_get_last();返回的信息:

[type]?????????? - 錯誤類型

[message] - 錯誤消息

[file]????????????? - 發(fā)生錯誤所在的文件

[line] ? ? ? ? ? ? - 發(fā)生錯誤所在的行

當前函數(shù)要在代碼執(zhí)行前執(zhí)行,否則無法調(diào)用。函數(shù)沒有返回值,如果傳入的callback不是可調(diào)用的,那么將會產(chǎn)生一個?E_WARNING?級別的錯誤。

參數(shù)說明:

callback_function

待注冊的中止回調(diào),中止回調(diào)是作為請求的一部分被執(zhí)行的,因此可以在它們中進行輸出或者讀取輸出緩沖區(qū)。

parameter

可以通過傳入額外的參數(shù)來將參數(shù)傳給中止函數(shù)

register_shutdown_function(‘zyfshutdownfunc‘);functionzyfshutdownfunc()

{if ($error =error_get_last()) {echo ‘輸出錯誤:register_shutdown_function: Type:‘ . $error[‘type‘] . ‘ Msg: ‘ . $error[‘message‘] . ‘ in ‘ . $error[‘file‘] . ‘ on line ‘ . $error[‘line‘] . ‘‘;

}

}

set_exception_handler(exception_function)

設置默認的異常處理程序,用在沒有用try/catch塊來捕獲的異常,也就是說不管你拋出的異常有沒有人捕獲,如果沒有人捕獲就會進入到該方法中,并且在回調(diào)函數(shù)調(diào)用后異常會中止。返回之前定義的異常處理程序的名稱,或者在錯誤時返回?NULL。 如果之前沒有定義錯誤處理程序,也會返回?NULL。

exception_function 參數(shù)說明:規(guī)定未捕獲的異常發(fā)生時調(diào)用的函數(shù)。該函數(shù)必須在調(diào)用 set_exception_handler() 函數(shù)之前定義。這個異常處理函數(shù)需要需要一個參數(shù),即拋出的 exception 對象。

總結(jié)

以上是生活随笔為你收集整理的PHP ERROR_PHP 处理错误函数的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。