用接口捕获异常。

Mat*_*o12 6 php interface exception try-catch catch-block

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

我有很多例外,它们的意思是相同的:找不到任何东西。所有这些异常都实现了接口(不是类NotFoundException。所以我的问题是:可以检查异常是否在catch块处实现了接口。我知道我可以将NotFoundException-interface更改为类,但是某些异常已经扩展了另一个异常。(示例: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...
}
Run Code Online (Sandbox Code Playgroud)

Jus*_*ᚄᚒᚔ 6

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

try {
    showPage($userPage);
} catch (NotFoundException $e) {
    showPage("Error404");
} catch (Exception $e) {
    showPage("Error500");
}
Run Code Online (Sandbox Code Playgroud)