php錯誤及異常捕捉

2021-07-05 02:17:43 字數 3365 閱讀 4366

在實際開發中,錯誤及異常捕捉僅僅靠try{}catch()是遠遠不夠的。

所以引用以下幾中函式。

a)   set_error_handler

一般用於捕捉  e_notice 、e_user_error、e_user_warning、e_user_notice

不能捕捉:

e_error, e_parse, e_core_error, e_core_warning, e_compile_error and e_compile_warning。

一般與trigger_error("...", e_user_error),配合使用。

[php]view plain

copy

print?

<?php  

// we will do our own error handling

error_reporting

(0);  

function

usererrorhandler(

$errno

, $errmsg

, $filename

, $linenum

, $vars

)        

$err

.= "\n\n"

;  echo

$err

;  }  

function

distance(

$vect1

, $vect2

)       if(

count

($vect1

) != 

count

($vect2

))    

for(

$i=0; 

$i<

count

($vect1

); $i

++)           

if(!

is_numeric

($c2

))   

$d+= 

$c2*

$c2- 

$c1*

$c1;      

}      

return

sqrt(

$d);  

}  $old_error_handle

= set_error_handler(

"usererrorhandler"

);  

$t= i_am_not_defined;  

//generates a warning

// define some "vectors"

$a= 

array

(2, 3, 

"foo"

);  

$b= 

array

(5.5, 4.3, -1.6);  

$c= 

array

(1, -3);  

//generate a user error

$t1= distance($c,

$b);  

// generate another user error

$t2= distance(

$b, 

"i am not an array"

) . 

"\n"

;  // generate a warning

$t3= distance(

$a, 

$b) . 

"\n"

;  ?>  

b)   set_exception_handler 

設定預設的異常處理程式,用於沒有用 try/catch 塊來捕獲的異常。 在 exception_handler 呼叫後異常會中止。 

與throw new exception('uncaught exception occurred'),連用。

[php]view plain

copy

print?

<?php  

// we will do our own error handling

error_reporting

(0);  

function

excepthandle(

$errno

, $errmsg

, $filename

, $linenum

, $vars

)        

$err

.= "\n\n"

;  echo

$err

;  }  

$old_except_handle

= set_exception_handler(

"excepthandle"

);  

//$t = i_am_not_defined;    //generates a warning

$a;  

throw

newexception(

'uncaught exception occurred'

);      

?>  

c)   register_shutdown_function 

執行機制是:php把要呼叫的函式調入記憶體。當頁面所有php語句都執行完成時,再呼叫此函式。

一般與trigger_error("...", e_user_error),配合使用。

[php]view plain

copy

print?

<?php  

error_reporting

(0);  

date_default_timezone_set('asia/shanghai'

);  

register_shutdown_function('my_exception_handler'

);  

$t= i_am_not_defined;  

//generates a warning

trigger_error("vectors need to be of the same size"

, e_user_error);       

function

my_exception_handler()  

}  ?>  

c) restore_error_handler()函式

定義和用法 restore_error_handler() 函式恢復之前的錯誤處理程式,該程式是由 set_error_handler() 函式改變的。

該函式永遠返回 true。

是set_error_handler()的反函式。

php 捕捉mysql錯誤 PHP捕捉錯誤

php捕捉錯誤 禁止錯誤輸出 error reporting 0 設定錯誤處理器 set error handler errorhandler 在指令碼結束時執行的函式 register shutdown function fatalerrorhandler 錯誤處理 param int err n...

關於PHP自動捕捉處理錯誤和異常的嘗試

之所以想著做錯誤和異常的自動處理是因為 用的公司自己的框架寫api,沒有異常和錯誤相關功能,而每次操作都進行try.catch,有點繁瑣不說,感覺還很雞肋,即使我catch到了,還是得寫 進行處理,哪怕封裝了乙個方法進行處理也還是繁瑣,這種情況應該是程式自動進行處理,不該是這樣弱智的人工try.ca...

PHP 錯誤處理及異常處理

1.設定自己的錯誤處理函式 trigger error 捕捉使用者級別的錯誤。set error handler 使用者自定義錯誤處理函式。2.捕獲異常 捕獲異常當然用trycatch 當然 中使用的異常處理類是thinkphp中,throw exception 為thinkphp的丟擲異常函式 另...