1.php的錯誤捕獲:try{} catch(Exception $e) { echo $e->getMessage();}句型格式對於錯誤的調試和控制幫助是很是大的。 php
<?php class test { static public function atest($val) { if($val>1) throw new Exception("Parms greater than 1"); if($val<1&&$val>0) throw new Exception("error"); echo $val; } } try { $val = 0.5; test::atest($val); } catch (Exception $e) { exit(json_encode(array("err_code"=>"500","err_msg"=>$e->getMessage()))); } ?>
優點:主要用來捕獲系統級的錯誤(業務邏輯層面的錯誤通常不用捕獲)這樣避免了方法的污染
ps:捕獲能夠獲取到的信息包括getFile() 獲取文件 getLine()獲取出錯的行 getMessage() 獲取插入的提示報錯信息。框架機制中,通常都須要提供捕獲機制
2.若是不用try{}catch(Exception $e){}句型
PHP裏提供了一個set_exception_handler()的簡化寫法 json
<?php function test1($e) { echo $e->getMessage(); } set_exception_handler('test1'); throw new Exception("test"); ?>
3.另一個錯誤提示的函數(和set_exception_handler()類似的用法) 框架
<?php function test() { echo " XPHP notice error"; } set_error_handler("test"); test ?>
該段代碼會報錯XPHP notice error
set_error_handler(error_function,error_types)
參數 描述
error_function 必需。規定發生錯誤時運行的函數。
error_types 可選。規定在哪一個錯誤報告級別會顯示用戶定義的錯誤。默認是 "E_ALL"。
4.另一個經常使用到的框架函數
register_shutdown_function('endRecord');
腳本運行完成後須要記錄的動做 函數
<?php function endRecord() { echo "PHP Script End"; } register_shutdown_function('endRecord'); ?>