PHP-錯誤處理
阿新 • • 發佈:2018-03-16
func 觸發 錯誤日誌 timezone class ble function 處理器 mage
PHP 5 預定義錯誤和日誌常量
打開一個不存在的文件
<?php /** * Coded by MuT6 Sch01aR * Date: 2018/3/12 22:30 */ $fp = fopen(‘test.txt‘,‘r‘); echo ‘ok‘; ?>
運行結果
報了一個文件不存在的警告,後面的ok成功打印
使用die()方法處理錯誤
執行完die()方法後程序會退出
<?php /** * Coded by MuT6 Sch01aR * Date: 2018/3/12 22:30 */ //使用die()方法處理 if (!file_exists(‘test.txt‘)){ //判斷文件是否存在 die(‘不存在文件!‘); } //die()方法的另一個更簡便的寫法 file_exists(‘test.txt‘) or die(‘不存在文件!!!‘) ?>
運行結果
自定義錯誤處理函數
自己定義錯誤處理的函數來處理程序的錯誤
<?php /** * Author: MuT6 Sch01aR * Date: 2018/3/13 * Time: 12:12 */ //定義一個錯誤處理函數 function my_error($errno, $errmsg){ // $errno為錯誤號,$errmsg為錯誤信息 echo ‘錯誤號:‘.$errno."\n"; echo ‘錯誤信息:‘.$errmsg; } //改寫set_error_handler處理器,調用錯誤處理函數my_error處理級別為E_WARNING的錯誤 set_error_handler(‘my_error‘, E_WARNING); $fp = fopen(‘test.txt‘,‘r‘); //打開一個不存在的文件 ?>
運行結果
錯誤觸發器
錯誤觸發器可以處理一些特定的錯誤
<?php /** * Author: MuT6 Sch01aR * Date: 2018/3/13 * Time: 12:41 */ $age = 121; if ($age > 120){ //調用系統的觸發器 trigger_error(‘年齡過大‘,E_USER_WARNING); exit(); } ?>
運行結果
系統觸發器處理了特定的錯誤
也可以自己定義錯誤觸發器
<?php /** * Author: MuT6 Sch01aR * Date: 2018/3/13 * Time: 12:41 */ //定義一個錯誤觸發器 function my_error($errno, $errmsg){ echo ‘錯誤號:‘.$errno."\n"; echo ‘錯誤信息:‘.$errmsg; } set_error_handler(‘my_error‘, E_USER_WARNING); $age = 121; if ($age > 120){ //調用系統的觸發器 trigger_error(‘年齡過大‘,E_USER_WARNING); exit(); } ?>
運行結果
錯誤日誌
錯誤日誌用來記錄程序運行時的錯誤
<?php /** * Author: MuT6 Sch01aR * Date: 2018/3/13 * Time: 12:02 */ function my_error($errno, $errmsg){ echo ‘錯誤號:‘.$errno.‘----‘.‘錯誤信息:‘.$errmsg; $error_msg = ‘錯誤號:‘.$errno.‘----‘.‘錯誤信息:‘.$errmsg; date_default_timezone_set("Asia/Chongqing"); $error_time = date(‘Y-m-d G:i:s‘); error_log(‘[‘.$error_time.‘]‘.$error_msg."\n",3,"log.txt"); } set_error_handler(‘my_error‘); function Guess_Age($age){ if($age> 120){ trigger_error(‘年齡過大‘); //觸發錯誤 } } Guess_Age(123); ?>
運行結果
生成了一個記錄錯誤的日誌文件
PHP-錯誤處理