設定錯誤和異常處理三函數
register_shutdown_function(array(‘Debug','fatalError')); //定義PHP程序執行完成后執行的函數set_error_handler(array(‘Debug','appError')); // 設置一個用戶定義的錯誤處理函數set_exception_handler(array(‘Debug','appException')); //自定義異常處理。
功能:register_shutdown_function() 函數可實現當程序執行完成后執行的函數,其功能為可實現程序執行完成的后續操作。程序在運行的時候可能存在執行超時,或強制關閉等情況,但這種情況下默認的提示是非常不友好的,如果使用register_shutdown_function()函數捕獲異常,就能提供更加友好的錯誤展示方式,同時可以實現一些功能的后續操作,如執行完成后的臨時數據清理,包括臨時文件等。
可以這樣理解調用條件:
1、當頁面被用戶強制停止時
2、當程序代碼運行超時時
3、當PHP代碼執行完成時,代碼執行存在異常和錯誤、警告
example1:
<?phpfunction test() { echo "test()";}register_shutdown_function("test");echo "show: ";//將輸出show:test()example2:
<?php class ClassDemo { public function __construct() { register_shutdown_function(array($this, "f")); } public function f() { echo "f()"; } } $demo = new ClassDemo(); echo "before </br>";//將輸出beforef()example3:
<?phpfunction f($str) { echo $str."<br>";} register_shutdown_function("f","hello"); class ClassDemo { public function __construct() { register_shutdown_function(array($this, "f"),"hello"); } public function f($str) { echo "f():".$str; } }$demo = new ClassDemo();echo "before </br>";//將輸出beforehellof():hello注意事項
1,register_shutdown_function()函數可重復調用,但執行的順序與注冊的順序相同
2,如果在調用register_shutdown_function()函數之前有exit()函數調用,register_shutdown_function()函數將不能執行
3,PHP4后支持注冊函數參數傳遞
4,在某些服務端,如Apache,當前目錄在register_shutdown_function()函數中能夠改變
5,register_shutdown_function()函數執行在headers發送之后
新聞熱點
疑難解答
圖片精選