在处理自定义PHP异常时使用“die()”是一个好习惯吗?

时间:2012-10-17 04:28:28

标签: php exception-handling die custom-exceptions

我在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()覆盖方法是一种好习惯,以防止输出任何父类&#34; Exception&#34;消息?

如您所见,它会在浏览器中输出HTML响应。我以前从未处理过自定义PHP异常,所以我想知道这是否会影响任何约定等?

1 个答案:

答案 0 :(得分:0)

DCoder关于向您发送错误或将其登录到文件中是一个很好的观点,以便您以后可以对其进行分析,但是关于您的问题,死亡可能有点激烈,将应用程序的流重定向到更好一个页面,用简单的语言通知发生了错误,管理员将尝试解决它。你可以在很多方面改写它。

但重要的是,客户不应该被错误所困扰或沮丧。如果您可以解释错误的原因并告诉用户如何解决它,或者不再重复并重定向到最后一个好步骤,这是最好的方法。如果你不能,那么你应该尝试解释并重定向到一个安全但有用的页面,如主页或带有错误说明和资源的页面,如搜索机器人,站点地图,导航工具或任何其他可能会有帮助的事情。

我会说,永远不要杀死应用程序。

再见