0

PHP でカスタム例外クラスを作成しました。

<?php

class Custom_Exception extends Exception {

    public function __construct( $title, $message, $code = 0, Exception $previous = null ) {
        parent::__construct( $message, $code, $previous );

        echo '<html>';
        echo '<head>';
        echo '<title>Custom Exception: ' . $title . '</title>';
        echo '</head>';
        echo '<body>';
        echo '<h1>Custom Exception</h1>';
        echo '<hr />';
        echo '<p><strong>Error: </strong>' . $title . '</p>';
        echo '<p><strong>Message: </strong><em>' . $message . '</em></p>';
        echo '<hr />';
        echo '<p>This Exception was raised on: ' . date( 'Y-m-d' ) . ' at ' . date( 'H:i:s' ) . '.';
        echo '</body>';
        echo '</html>';
        http_response_code( $code );

        die();
    }

}

親クラスの " " メッセージが出力されないようにするために、__constructオーバーライドされたメソッドをで終了することは良い習慣ですか?die()Exception

ご覧のとおり、HTML 応答がブラウザーに出力されます。これまでにカスタム PHP 例外を扱ったことがないので、これが規約などに影響するかどうかを知りたいですか?

4

1 に答える 1

0

DCoder は、後で分析できるようにエラーを送信するか、ファイルにログインすることについて良い点を持っていますが、あなたの質問については、 die は少し劇的かもしれません。アプリケーションの流れを次のページにリダイレクトする方がはるかに優れています。エラーが発生し、管理者がその解決を試みることを平易な言葉で通知します。いろいろな言い方ができます。

しかし、重要なことは、クライアントがエラーに悩まされたり落胆したりしてはならないということです。エラーの理由を説明し、その解決方法をユーザーに伝えることができる場合、またはエラーを繰り返さずに最後の適切なステップにリダイレクトすることが最善の方法です。それができない場合は、ホームページや、検索ボット、サイト マップ、ナビゲーション ツールなどのエラーの説明とリソースを含むページなど、安全だが有用なページに説明してリダイレクトするようにしてください。役立つかもしれないこと。

私は、決してアプリケーションを強制終了しないでください。

さよなら

于 2012-10-17T06:01:46.033 に答える