6

我对 PHP 中的异常处理有疑问。

我有很多例外,它们的含义相同:找不到东西。所有这些异常都实现了接口(不是类NotFoundException。所以我的问题是:可以检查异常是否在 catch-block 实现了接口。我知道我可以将 NotFoundException 接口更改为一个类,但某些异常已经扩展为另一个异常。(例如:CategoryNotFoundException扩展CategoryException和实现NotFoundException)。

为什么我需要这个接口?当一个页面正在显示并且一些实现该接口的异常将抛出一个 Error404 应该显示。例子:

$userPage = $_GET["page"];
try{
    showPage($userPage);
} catch (){ //How to catch the `NotFoundException` interface?
    showPage("Error404");
} catch (Exception $e){
    showPage("Error500"); //Something is wrong...
}
4

1 回答 1

7

只需指定您要捕获的异常类(或接口):

try {
    showPage($userPage);
} catch (NotFoundException $e) {
    showPage("Error404");
} catch (Exception $e) {
    showPage("Error500");
}
于 2012-12-14T22:07:33.450 回答