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 に答える