日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

php 异常错误信息用处,关于PHP中异常错误的处理详细介绍

發(fā)布時(shí)間:2023/12/10 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 php 异常错误信息用处,关于PHP中异常错误的处理详细介绍 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1. 錯(cuò)誤報(bào)告級別 error_reporting()error_reporting(int $level);

PHP 5.4 及以上 E_ALL 包含了 E_STRICT。

PHP Manual 所有的錯(cuò)誤級別。

范例:<?php

// 關(guān)閉所有PHP錯(cuò)誤報(bào)告

error_reporting(0);

// Report simple running errors

error_reporting(E_ERROR | E_WARNING | E_PARSE);

// 報(bào)告 E_NOTICE也挺好 (報(bào)告未初始化的變量

// 或者捕獲變量名的錯(cuò)誤拼寫)

error_reporting(E_ERROR | E_WARNING | E_PARSE | E_NOTICE);

// 除了 E_NOTICE,報(bào)告其他所有錯(cuò)誤

error_reporting(E_ALL ^ E_NOTICE);

// 報(bào)告所有 PHP 錯(cuò)誤 (參見 changelog)

error_reporting(E_ALL);

// 報(bào)告所有 PHP 錯(cuò)誤

error_reporting(-1);

// 和 error_reporting(E_ALL); 一樣

ini_set('error_reporting', E_ALL);

?>

2. 錯(cuò)誤處理函數(shù) set_error_handler()set_error_handler(function (int $errno, string $errstr, string $errfile, int $errline) {

// ...

}, $error_types = E_ALL)

上述 $error_types 指定的錯(cuò)誤類型會(huì)被該錯(cuò)誤處理函數(shù)攔截 ( 除非該函數(shù)返回了 false)

帶 @ 前綴的語句發(fā)生錯(cuò)誤時(shí), $errno 值為 0

腳本會(huì)在該處理函數(shù)結(jié)束后繼續(xù)執(zhí)行 (因此必要時(shí)需主動(dòng)調(diào)用 die() )

范例:function handleError($level, $message, $file = '', $line = 0)

{

if (error_reporting() & $level) {

throw new ErrorException($message, 0, $level, $file, $line);

}

return false;

}

將 錯(cuò)誤 轉(zhuǎn)換為 異常

注意: 無法捕獲的錯(cuò)誤

以下級別的錯(cuò)誤不能由用戶定義的函數(shù)來處理:

E_ERROR

E_PARSE

E_CORE_ERROR

E_CORE_WARNING

E_COMPILE_ERROR

E_COMPILE_WARNING

在 調(diào)用 set_error_handler()函數(shù)所在文件中產(chǎn)生的大多數(shù) E_STRICT。

這些無法捕獲的錯(cuò)誤, 可在 register_shutdown_function() 中處理( 但腳本仍會(huì)結(jié)束 )

3. 異常處理函數(shù) set_exception_handler// < PHP 7

set_exception_handler('handleException')

// < PHP 7

handleException(Exception $ex)

{

echo "Uncaught exception: " , $ex->getMessage(), "\n";

}

// >= PHP 7

handleException(Throwable $ex)

{

echo "Uncaught exception: " , $ex->getMessage(), "\n";

}

在用戶自定義異常處理函數(shù)內(nèi)部, 可根據(jù)情況做一下處理:

日志記錄錯(cuò)誤

web 渲染錯(cuò)誤頁面

console 渲染錯(cuò)誤提示

4. PHP 中止時(shí)執(zhí)行函數(shù)

register_shutdown_functionregister_shutdown_function(function () {

}, $para1, $param2, ...)

在用戶自定義腳本中止處理函數(shù)內(nèi)部, 可根據(jù)情況做一下處理:

判斷是否因嚴(yán)重錯(cuò)誤而結(jié)束腳本(無法被 set_error_handler 捕獲的錯(cuò)誤中止腳本)register_shutdown_function('handleShutdown')

function handleShutdown()

{

if (! is_null($error = error_get_last()) && isFatal($error['type'])) {

// handleException() 函數(shù)同時(shí)處理 set_exception_handler

handleException(new \ErrorException(

$error['message'], $error['type'], 0, $error['file'], $error['line'],

));

}

}

function isFatal($type)

{

return in_array($type, [E_COMPILE_ERROR, E_CORE_ERROR, E_ERROR, E_PARSE]);

}

以下錯(cuò)誤無法被set_error_handler 捕獲

E_ERROR

E_PARSE

E_CORE_ERROR

E_CORE_WARNING

E_COMPILE_ERROR

E_COMPILE_WARNING

若因?yàn)殄e(cuò)誤而結(jié)束腳本, 若是嚴(yán)重錯(cuò)誤則可將其轉(zhuǎn)為 異常類, 并由異常處理函數(shù)統(tǒng)一處理.

Note:

多次調(diào)用 register_shutdown_function時(shí)不會(huì)互相覆蓋, 而是會(huì)按照注冊順序被依次調(diào)用.

除非在某個(gè)注冊的方法內(nèi)部調(diào)用 exit()

Note:

進(jìn)程被信號(hào) SIGTERM 或 SIGKILL 殺死時(shí)中止函數(shù)不會(huì)被調(diào)用. 可通過pcntl_signal捕獲信號(hào), 再在其中調(diào)用 exit() 來進(jìn)行正常中止。

以上就是關(guān)于錯(cuò)誤異常的處理,如有錯(cuò)誤請指出。不勝感激!

更多相關(guān)問題請?jiān)L問PHP中文網(wǎng):PHP視頻教程

總結(jié)

以上是生活随笔為你收集整理的php 异常错误信息用处,关于PHP中异常错误的处理详细介绍的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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