建立乙個exception物件後你可以將物件返回,但不應該這樣使用,更好的方法是用throw關鍵字來代替。throw用來丟擲異常:
throw new exception( "my message", 44 );
throw 將指令碼的執行中止,並使相關的exception物件對客戶**可用。
以下是改進過的getcommandobject() 方法:
index_php5.php
<?php
// php 5
require_once('cmd_php5/command.php');
class commandmanager /.php";
if (!file_exists($path))
require_once $path;
if (!class_exists($cmd))
$class = new reflectionclass($cmd);
if (!$class->issubclassof(new reflectionclass('command')))
return new $cmd();
} } ?>
**中我們使用了php5的反射(reflection)api來判斷所給的類是否是屬於command 型別。在錯誤的路徑下執行本指令碼將會報出這樣的錯誤:
fatal error: uncaught exception 'exception' with message 'cannot find command/xrealcommand.php' in /home/xyz/basicexception.php:10
stack trace:
#0 /home/xyz/basicexception.php(26):
commandmanager->getcommandobject('xrealcommand')
#1
thrown in /home/xyz/basicexception.php on line 10
預設地,丟擲異常導致乙個fatal error。這意味著使用異常的類內建有安全機制。而僅僅使用乙個錯誤標記,不能擁有這樣的功能。處理錯誤標記失敗只會你的指令碼使用錯誤的值來繼續執行。
PHP5的異常處理機制
有兩個理由讓我們想要從 exception 類中派生中子類 1 讓子類提供自定義的功能 2 區分不同型別的異常 看第二個例子。使用 commandmanager類時 我們可能會產生兩個錯誤 乙個是一般性的錯誤如找不到目錄,另乙個是找不到或無法生成 command物件。這樣我們需要針對這兩個錯誤來定義...
PHP5的異常處理機制 1 本文索引
matt zandstra 翻譯 簡介在php5之前的錯誤處理 使用die 或trigger error 返回錯誤標記 使用pear處理錯誤 php5的異常機制 使用throw關鍵字 try catch語句 處理多個錯誤 自定義異常型別 異常的傳遞 更多異常的相關資訊 總結關於作者 本文面向的讀者 ...
php異常處理機制
異常的規則 需要進行異常處理的 應該放入 try 塊內,以便捕獲潛在的異常。每個 try 或 throw 塊必須至少擁有乙個對應的 catch 塊。使用多個 catch 塊可以捕獲不同種類的異常。可以在 try 塊內的 catch 塊中丟擲 再次丟擲 異常。簡而言之 如果丟擲了異常,就必須捕獲它。1...