php中的錯誤異常處理

來源:互聯網
上載者:User

標籤:添加   資料庫連接   構造   cep   host   str   inf   article   格式   

小涵 | 閱讀: 1636在PHP5中添加了類似於其它語言的錯誤異常處理模組。在PHP代碼中所產生的異常可被throw語句拋出並被catch語句捕獲。需要進行異常處理的代碼都必須放入在PHP5中添加了類似於其它語言的錯誤異常處理模組。在 PHP代碼中所產生的異常可被 throw語句拋出並被 catch 語句捕獲。需要進行異常處理的代碼都必須放入 try 代碼塊內,以便捕獲可能存在的異常。每一個 try 至少要有一個與之對應的 catch。使用多個 catch 可以捕獲不同的類所產生的異常。當 try 代碼塊不再拋出異常或者找不到 catch 能匹配所拋出的異常時,PHP 代碼就會在跳轉到最後一個 catch 的後面繼續執行。當然,PHP 允許在 catch 代碼塊內再次拋出(throw)異常。當一個異常被拋出時,其後(譯者註:指拋出異常時所在的代碼塊)的代碼將不會繼續執行,而 PHP 就會嘗試尋找第一個能與之匹配的 catch。如果一個異常沒有被捕獲,而且又沒用使用 set_exception_handler() 作相應的處理的話,那麼 PHP 將會產生一個嚴重的錯誤,並且輸出 Uncaught Exception ... (未捕獲異常)的提示資訊。 

/** 
* Exception.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(); // 可輸出的字串 

?> 

/** 
* syntax .php 
*/ 

//文法結構以及分析 

//PHP有兩種拋出異常的格式,如下 

//【1】try...catch... 
try { 
//實行可能有異常的操作,比如資料庫錯作,檔案錯作 
}catch (Exception $e){ 
//列印錯誤資訊 


//【2】throw 
$message=‘我必須被運行在try{}塊中,出現異常的話我($message)將被返回(傳遞)給catch()裡的異常對象的執行個體比如上面的$e‘; 
$code=123; //錯誤碼號,可在catch塊中用$e->getCode();返回我的值 123,這樣我就可以自訂錯誤碼號 
throw new Exception($message,$code); 
//學JAVA的注意,PHP異常處理沒有throws 

?> 
/** 
* Example.php 
*/ 
//兩個執行個體掌握PHP異常處理 

//例【1】用 try...catch 
/* PDO串連mysql資料庫,如果沒看過PDO,先看下PDO的建構函式,要不跳過例1看例2 */ 
$dsn = ‘mysql:host=localhost;dbname=testdb‘; 
$user = ‘dbuser‘; 
$password = ‘dbpass‘; 
try { 
$dbh = new PDO($dsn, $user, $password); //建立資料庫連接對象容易出現異常 
echo ‘如果上面出現異常就不能顯示我了‘; 
} catch (PDOException $e) { 
echo ‘Connection failed: ‘ . $e->__toString(); 

?> 
//例[2] try..cathc 和 throw一起用 
try { 
$error = ‘我拋出異常資訊,並且跳出try塊‘; 
if(is_dir(‘./tests‘)){ 
echo ‘do sth.‘; 
}else{ 
throw new Exception($error,12345); 

echo ‘上面有異常的話就輪不到我了!~
‘,"\n"; 
} catch (Exception $e) { 
echo ‘捕獲異常: ‘, $e->getMessage(),$e->getCode(), "\n
"; //顯示$error和123456 

echo ‘繼續執行‘; 
?>

php中的錯誤異常處理

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.