讓我們用Exception類的自定義擴展來處理自定義異常, 這樣,例如說:php:在異常處理程序中處理異常?
$testObject = new testClass();
和這樣的自動加載:
function __autoload($class_name) {
$file = $class_name.'.php';
if (file_exists($file)) {
include $file;
}else{
throw new loadException("File $file is missing");
}
if(!class_exists($class_name,false)){
throw new loadException("Class $class_name missing in $file");
}
return true;
}
try {
$testObject = new testClass();
}catch(loadException $e){
exit('<pre>'.$e.'</pre>');
}
文件testClass.php不存在,因此用消息調用loadException: 文件testClass.php丟失。 (和所有其他細節...行號等)
一切都很好,直到我決定隱藏所有的錯誤,而是顯示一個404頁面(或500頁...),所以當然我想添加一個loadErrorPage函數。
class loadException {
...
function loadErrorPage($code){
$page = new pageClass();
echo $page->showPage($code);
}
}
...
try {
$testObject = new testClass();
}catch(loadException $e){
$e->loadErrorPage(500);
}
但有明顯的問題是,如果testClass.php和pageClass.php文件丟失,則顯示,而不是首選404頁的致命錯誤。
我很困惑:S 如何在異常句柄中優雅地處理這個異常?
不適用於我:S – 2010-05-13 12:22:47
確定創建了一個特定的測試情況下,它確實有效,我想知道爲什麼它在實際應用中不起作用。 – 2010-05-13 12:29:26