PHP異常處理定義與使用方法

PHP語法吸收了C語言、Java和Perl的特點,利於學習,使用廣泛,主要適用於Web開發領域。下面是小編分享的PHP異常處理定義與使用方法,一起來看一下吧。

PHP異常處理定義與使用方法

<?php

//php5提供了基本的異常處理類,可直接使用 ,不需要自己再定義

// class Exception

// {

// protected $message = 'Unknown exception'; // 異常信息

// protected $code = 0; // 用戶自定義異常代碼

// protected $file; // 發生異常的文件名

// protected $line; // 發生異常的代碼行號

// function __construct($message = null, $code = 0);

// final function getMessage(); // 返回異常信息

// final function getCode(); // 返回異常代碼

// final function getFile(); // 返回發生異常的文件名

// final function getLine(); // 返回發生異常的代碼行號

// final function getTrace(); // backtrace() 數組

// final function getTraceAsString(); // 已格成化成字符串的 getTrace() 信息

// /* 可重載的方法 */

// function __toString(); // 可輸出的字符串

// }

?>

<?php

//定義一個頂級異常處理

function my_exception($e){

echo "我是頂級異常處理".$e->getMessage();

}

//修改默認的頂級異常處理函數(器)

set_exception_handler("my_exception");

//我們使用異常機制

try{

addUser("shunping");

updateUser("xiaoming1");

}

//catch用來 捕獲異常, Exception 是異常類(是php定義好一個類)

catch(Exception $e){

//返回異常信息

echo "返回異常信息(失敗信息) =".$e->getMessage()."<br/>";

echo "返回異常代碼 =".$e->getCode()."<br/>";

echo "返回發生異常的文件名 =".$e->getFile()."<br/>";

echo "返回發生異常的代碼行號 =".$e->getLine()."<br/>";

//echo " =".$e->getTrace()."<br/>"; // backtrace() 數組

//可以繼續拋出,這時將會啓動php默認的異常處理器來處理

//你也可以自己定義一個頂級異常處理器,對其進行處理

throw $e;

}

function addUser($username){

if($username=="shunping"){

//添加ok

echo "ok1";

}else{

//添加error

//拋出異常.

throw new Exception("添加失敗");

}

}

function updateUser($username){

if($username=="xiaoming"){

//正常修改

echo "ok2";

}else{

//平拋出異常

throw new Exception("修改失敗");

}

}

?>

  異常使用的注意事項 :

通過上面的案例,我們可以看出,使用

try{

//代碼

}catch(Exception $e){

//對異常處理

}

這種方式,可以更有效的控制錯誤.所以在開發中大量的使用.

1. 當捕獲到一個異常後,try{} 塊裏的`後續代碼不繼續執行.

2. 如果有一個異常發生,但是你沒有catch 捕獲,則提示一個Uncaught Exception.(系統.)

3. 當catch一個異常,你可以處理,也可以不處理,不處理就可以

throw new Exception("信息");

4. 你可以自定義異常類

class MyException extends Exception {

}

5. 使用多個 catch 代碼塊可以捕獲不同種類的異常

try{

//代碼....

//第一句話

//第二句話

}catch(PDOException $e){

//

}catch(Exception $e){

|

}

6. 也可簡單使用 Exception 捕獲

代碼說明:

<?php

//定義了一個異常

class MyException1 extends Exception{

}

class MyException2 extends Exception{

}

function A(){

throw new MyException1("a");

}

function B(){

throw new MyException2("b")

}

function C(){

try{

A();//拋出MyException1

B();//拋出MyException2

}catch(Exception1 $e1){

$e1->getMessage();

}catch(Exception2 $e2){

$e2->getMesage();

}

}

?>

 異常的規則

需要進行異常處理的代碼應該放入 try 代碼塊內,以便捕獲潛在的異常。

每個 try 或 throw 代碼塊必須至少擁有一個對應的 catch 代碼塊。

使用多個 catch 代碼塊可以捕獲不同種類的異常。

可以在 try 代碼塊內的 catch 代碼塊中拋出(再次拋出)異常。

簡而言之:如果拋出了異常,就必須捕獲它。或者使用頂級異常處理器處理。

如果不拋,即使有異常也不會捕獲,不會處理