使用接口捕获异常。

时间:2012-12-14 17:21:03

标签: php exception interface try-catch catch-block

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

我有很多例外,那些意思相同:找不到东西。所有这些异常都实现了接口( not class NotFoundException。 所以我的问题是:可以检查异常是否在catch块中实现了接口。 我知道我可以将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...
}

2 个答案:

答案 0 :(得分:4)

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

try {
    showPage($userPage);
} catch (NotFoundException $e) {
    showPage("Error404");
} catch (Exception $e) {
    showPage("Error500");
}

答案 1 :(得分:-4)

您应该使用Apache或IIS,而不是PHP。您可以谷歌获取有关这些平台的信息,但通常您可以使用以下内容修改配置文件:

ErrorDocument 404 /new_404.html

用于您要使用的任何目录/主机/等。通常它可能是每个主机,但谁知道,这取决于你。