第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

PHP捕獲致命錯誤的時候沒有顯示異常?

PHP捕獲致命錯誤的時候沒有顯示異常?

PHP
桃花長相依 2019-03-18 18:09:43
在PHP中自己想要試用自定義的異常處理函數(shù)捕獲所有的錯誤處理,并且輸出具有一定格式的錯誤信息,包括致命錯誤和非致命錯誤,在處理非致命錯誤上輸出是沒問題的,但是輸出致命錯誤的時候,并沒有輸出,代碼如下: <?php /** * 使用自定義的異常處理函數(shù),捕獲所有的錯誤處理,包括非致命的和致命的 */ // 屏蔽所有的錯誤顯示 error_reporting(0); // 使用自定義的異常處理函數(shù)來替代PHP的錯誤處理 set_error_handler('customError'); // 當(dāng)PHP終止的時候(執(zhí)行完成或者是遇到致命錯誤中止的時候)會調(diào)用FetalError方法 register_shutdown_function('FetalError'); /** * 自定義的異常處理函數(shù) * @param $errno int * @param $errstr string * @param $errfile string * @param $errline int * @throws Exception */ function customError($errno, $errstr, $errfile, $errline) { $res = PHP_EOL . " 錯誤代碼: [${errno}] ${errstr}" . PHP_EOL; $res .= " 錯誤所在的代碼行: {$errline}"; $res .= " 文件: {$errfile}" . PHP_EOL; $res .= " PHP版本:" . PHP_VERSION . "(" . PHP_OS . ")" . PHP_EOL; // 自定義錯誤處理時,手動拋出異常 throw new Exception($res); // echo $res; } /** * 捕獲致命錯誤 */ function FetalError() { $err_info = error_get_last(); if ($err_info) { customError($err_info['type'], $err_info['message'], $err_info['file'], $err_info['line']); } } function test() { // Warning錯誤 // $a = 5 / 0; // echo PHP_EOL; // 這里報致命錯誤Fatal error $a = new a(); echo PHP_EOL; // 這里會報致命錯誤Fatal error echo fun(); echo PHP_EOL; echo "after"; echo PHP_EOL; } try { test(); // 其他的業(yè)務(wù)邏輯,可能會拋出異常 } catch (Exception $e) { var_dump(11111); echo $e->getMessage(); } 運行之后什么都沒有輸出,而如果把customError方法的throw注釋掉,換成echo $res,就沒問題,請問為什么不能用throw?并且test方法里面的注釋的那些非致命錯誤使用throw就可以正常輸出的?為什么要用throw呢,這是因為try中除了test方法,可能還有其他的業(yè)務(wù)邏輯會拋出異常,所以我是打算把所有的異常和錯誤都在catch中進行捕獲、錯誤輸出以及錯誤處理,所以需要customError方法中進行throw拋出異常。 如果把error_reporting(0)注釋掉,是可以顯示的,如下: λ php 1_25_allError.php Fatal error: Uncaught Error: Class 'a' not found in C:\laragon\www\php_book\1_25_allError.php on line 67 Error: Class 'a' not found in C:\laragon\www\php_book\1_25_allError.php on line 67 Call Stack: 0.0000 355368 1. {main}() C:\laragon\www\php_book\1_25_allError.php:0 0.0000 355664 2. test() C:\laragon\www\php_book\1_25_allError.php:79 錯誤代碼: [1] Uncaught Error: Class 'a' not found in C:\laragon\www\php_book\1_25_allError.php:67 Stack trace: #0 C:\laragon\www\php_book\1_25_allError.php(79): test() #1 {main} thrown 錯誤所在的代碼行: 67 文件: C:\laragon\www\php_book\1_25_allError.php PHP版本:7.1.1(WINNT) 但是也會輸出PHP自帶的致命錯誤信息,我是想要屏蔽致命錯誤信息并且使用自定義異常處理函數(shù)即customError來輸出致命錯誤信息的。
查看完整描述

1 回答

  • 1 回答
  • 0 關(guān)注
  • 481 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號