1. 程式人生 > >PHP系列(七)PHP錯誤異常處理

PHP系列(七)PHP錯誤異常處理

php錯誤處理

1、Php錯誤報告級別

1 E_ERROR 致命的運行錯誤。錯誤無法恢復,暫停執行腳本。

2 E_WARNING 運行時警告(非致命性錯誤)。非致命的運行錯誤,腳本執行不會停止。

4 E_PARSE 編譯時解析錯誤。解析錯誤只由分析器產生。

8 E_NOTICE 運行時提醒(這些經常是你代碼中的bug引起的,也可能是有意的行為造成的。)

error_reporting = E_ALL & ~E_NOTICE

2、自定義php錯誤報告方式

set_error_handler("myerrorfun");

$mess ="";

function myerrorfun($error_type,$error_message,$error_file,$error_line){

global $mess;

$mess.="發生錯誤級別為{$error_type}類型、錯誤消息<b>{$error_message}</b>,在文件夾{$error_file},第{$error_line}行。<br>";

}

getType($a);

echo"$mess";

顯示為:發生錯誤級別為8類型、錯誤消息Undefined variable: a,在文件夾C:\AppServ\www\index.php,第9行。

set_error_handler($_type,$_message,$_errfile,$_errline) 函數設置用戶自定義的錯誤處理程序,然後觸發錯誤

3、php記錄錯誤日誌

log_errors = on 開啟php日誌

error_log =syslog 將php日誌寫到系統上去。

error_log = “c:/lamp/php_error.log”;自已指定一個存放目錄、與上面相斥

ini_set(“log_errors”,“on”); 在php開發文件裏設置

try{

echo"開始";

run();

}catch(Exception $e){

echo$e->getMessage()."<br>";

}

//當try{}裏面不成功就拋出catch裏面的異常

4、自定義異常類

//自定義異常類、必須是系統類Exception的子類

//如果繼承Exception類、重寫了構造方法、一定要調一下父類中被覆蓋的方法/

class MyBtException extends Exception{

function__construct($mess){

parent::__construct($mess);

}

functionchangBt(){

echo"換個備胎";

}

}

try{

throw new MyBtException("車子胞胎");

echo"路況很好!";

}catch(MyBtException $e){

Echo $e->getMessage()."<br>";

$e->changBt()."<br>";

}

5、自定義多個異常類

//寫出對應這個異常解決方法, 就是一下正常類的結構

class MyBtException extends Exception{

function__construct($mess) {

parent::__construct($mess);

}

functionchangBt() {

echo"換上備胎!";

}

}

class WcException extends Exception {

functionpro() {

echo"去公廁<br>";

}

}

class NoException extends Exception {

functionpro() {

echo"買面色湊合一下!<br>";

}

}

Class FlException extends Exception {

functionpro() {

echo"走小路!<br>";

}

}


class Dm {

function gowc($bj) {

if(!$bj){

throw new WcException("馬桶不好用了");

}

echo"哈哈,事兒辦的很成功!<br>";

}

function eat($time) {

if(!$time){

thrownew NoException("起來晚了,早餐沒了!");

}

echo"吃的很好!<br>";

}

function dri($dz) {

if(!$dz){

throw new MyBtException("爆胎了");

}

echo"車開的不錯!<br>";

}

function run($yu) {

if(!$yu){

throw new FlException("天下雪了, 高速封路了");

}

echo"高速很好走!<br>";

}

}

echo "早上起床<br>";


try{

$dm =new Dm();

// 1. 上廁所 (馬桶不好用了),去公廁

$dm-> gowc(true);

// 2. 吃早餐 (沒有早點),買面包

$dm-> eat(true);

//3. 開車上班 (爆tai) 換下

$dm->dri(true);

//4. 上高速 (下雪) 小路

$dm->run(false);

} catch(MyBtException $e) { // Exception $e = newException(‘‘);

echo$e->getMessage()."<br>";

//自定義類中的解決方法調用,解決了問題

$e->changBt()."<br>";

try {

}catch(Exception$e) {

}

} catch(NoException $e) {

echo$e->getMessage()."<br>";

$e->pro();

} catch(WcException $e) {

echo$e->getMessage()."<br>";

$e->pro();

} catch(Exception $e) {

echo$e->getMessage()."<br>";

//$e->pro();

}

echo"到公司開始工作<br>";


本文出自 “Linux獄長” 博客,請務必保留此出處http://sswqzx.blog.51cto.com/2494644/1968854

PHP系列(七)PHP錯誤異常處理