Допустим, мы использовали пользовательские расширения класса Exception для обработки пользовательских исключений,
как это например:
$testObject = new testClass();
и автозагрузка, подобная этой:
<code>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.'
');
}
файл 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 AND pageClass.php отсутствуют, вместо предпочтительной страницы 404 отображается фатальная ошибка.
Я запутался: S
Как элегантно обработать это исключение в дескрипторе исключения?