我对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...
}
答案 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
用于您要使用的任何目录/主机/等。通常它可能是每个主机,但谁知道,这取决于你。