成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

PHP中異常錯誤怎么處理-創(chuàng)新互聯(lián)

這篇文章給大家分享的是有關(guān)PHP中異常錯誤怎么處理的內(nèi)容。小編覺得挺實用的,因此分享給大家做個參考。一起跟隨小編過來看看吧。

我們提供的服務(wù)有:網(wǎng)站設(shè)計制作、成都做網(wǎng)站、微信公眾號開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認證、老邊ssl等。為上1000+企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的老邊網(wǎng)站制作公司

1. 錯誤報告級別 error_reporting()

error_reporting(int $level);

PHP 5.4 及以上 E_ALL 包含了 E_STRICT。

PHP Manual 所有的錯誤級別。

范例:

<?php

// 關(guān)閉所有PHP錯誤報告
error_reporting(0);

// Report simple running errors
error_reporting(E_ERROR | E_WARNING | E_PARSE);

// 報告 E_NOTICE也挺好 (報告未初始化的變量
// 或者捕獲變量名的錯誤拼寫)
error_reporting(E_ERROR | E_WARNING | E_PARSE | E_NOTICE);

// 除了 E_NOTICE,報告其他所有錯誤
error_reporting(E_ALL ^ E_NOTICE);

// 報告所有 PHP 錯誤 (參見 changelog)
error_reporting(E_ALL);

// 報告所有 PHP 錯誤
error_reporting(-1);

// 和 error_reporting(E_ALL); 一樣
ini_set('error_reporting', E_ALL);

?>

2. 錯誤處理函數(shù) set_error_handler()

set_error_handler(function (int $errno, string $errstr, string $errfile, int $errline) {
    // ...
}, $error_types = E_ALL)

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

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

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

范例:

function handleError($level, $message, $file = '', $line = 0)
{
    if (error_reporting() & $level) {
        throw new ErrorException($message, 0, $level, $file, $line);
    }
    return false;
}

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

注意: 無法捕獲的錯誤

以下級別的錯誤不能由用戶定義的函數(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。

這些無法捕獲的錯誤, 可在 register_shutdown_function() 中處理( 但腳本仍會結(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ù)情況做一下處理:

日志記錄錯誤

web 渲染錯誤頁面

console 渲染錯誤提示

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

register_shutdown_function

register_shutdown_function(function () {

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

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

判斷是否因嚴重錯誤而結(jié)束腳本(無法被 set_error_handler 捕獲的錯誤中止腳本)

register_shutdown_function('handleShutdown')

function handleShutdown()
{
if (! is_null($error = error_get_last()) && isFatal($error['type'])) {
      // handleException() 函數(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]);
}

以下錯誤無法被 set_error_handler 捕獲

E_ERROR

E_PARSE

E_CORE_ERROR

E_CORE_WARNING

E_COMPILE_ERROR

E_COMPILE_WARNING

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

Note:

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

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

Note:

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

感謝各位的閱讀!關(guān)于PHP中異常錯誤怎么處理就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,讓大家可以學(xué)到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機、免備案服務(wù)器”等云主機租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。

網(wǎng)頁題目:PHP中異常錯誤怎么處理-創(chuàng)新互聯(lián)
分享路徑:http://jinyejixie.com/article18/disegp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站設(shè)計、動態(tài)網(wǎng)站、品牌網(wǎng)站制作、Google、微信小程序網(wǎng)頁設(shè)計公司

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)
石阡县| 来凤县| 扎鲁特旗| 南安市| 手游| 新闻| 炎陵县| 隆化县| 海淀区| 吉首市| 罗源县| 蒙城县| 台湾省| 塘沽区| 吕梁市| 黎城县| 武安市| 兴安县| 安达市| 丰顺县| 淮北市| 康马县| 和龙市| 囊谦县| 河东区| 漳平市| 宣恩县| 镇雄县| 临西县| 汾西县| 惠安县| 余江县| 耒阳市| 长葛市| 文成县| 宜都市| 马鞍山市| 衡山县| 伊川县| 闽清县| 五原县|