使用自定义错误处理程序的PHP Try Catch始终返回空异常

时间:2017-03-24 03:30:56

标签: php exception null try-catch

我正在尝试关注Can I try/catch a warning?并将所有警告视为例外。我可以在自定义错误处理程序中获取错误详细信息,但是我在catch块中得到的ErrorException总是为空。

private function SetCustomExceptionHandler() {
        set_error_handler(function($errno, $errstr, $errfile, $errline, array $errcontext) {
            log_message('error', '$errno ' . $errno);
            log_message('error', '$errstr ' . $errstr);
            log_message('error', '$errfile ' . $errfile);
            log_message('error', '$errline ' . $errline);
            log_message('error', '$errcontext ' . json_encode($errcontext));

            throw new ErrorException($errstr, 0, $errno, $errfile, $errline);
        });
    }

$this->SetCustomExceptionHandler();
            try {
                //LDAP query that returns: ldap_search(): Partial search results returned: Sizelimit exceeded
            }
            catch (ErrorException $e) {

                log_message('error', json_encode($e));
            }

1 个答案:

答案 0 :(得分:1)

这回答:Exception message not being shown if json_encode is applied to the output

在我的代码中,我所要做的就是以下内容:

catch (Exception $e) {
    $data['exception'] = $e->getMessage();
}
echo json_encode($data);

这足以让我的异常数据通过我的JSON数组。