我使用以下函数来设置错误控制:
set_error_handler
set_exception_handler当发生错误时,它调用此函数来捕获错误并将其存储到数据库中,然后将用户重定向到通用页面
function log_error($exception)
{
if(is_object($exception))
log_action(ERROR, "Exception with message " . $exception->getMessage() . " thrown in " . $exception->getFile() . " on line " . $exception->getLine(), base_url() . $_SERVER["REQUEST_URI"]);
else
log_action(ERROR, "Unable to catch exception. print out: " . print_r($exception, true), base_url() . $_SERVER["REQUEST_URI"]);
header("Location: " . base_url() . "public_error_notification");
}这通常是有效的,除了很多时候,我没有得到一个错误对象,我只是得到了一个数字。我经常得到的两个数字是8和2。你可以在我的错误日志中看到这两个数字。我的问题是,这些数字意味着什么?当我查找它时,它是有意义的,因为有文件的错误代码,但我现在得到的错误与文件无关。我假设它们是错误代码,那么有什么方法可以获得可以返回的错误代码列表呢?
发布于 2011-01-16 01:35:31
似乎您对异常处理程序和错误处理程序都使用了相同的回调,这两个处理程序不会传递相同类型的参数。
看看set_error_handler文档,第一个参数是错误代码,第二个参数是错误字符串。未传递任何对象
http://php.net/set_error_handler
有关错误代码,请检查以下内容:
http://php.net/manual/en/errorfunc.constants.php
发布于 2011-01-16 01:35:12
error_handler回调函数的签名如下:
handler ( int $errno , string $errstr [, string $errfile [, int $errline [, array $errcontext ]]] )第一个参数是错误号,第二个参数是描述错误的字符串。
同时,exception_handler有一个带有这个签名的函数:
handler ( object $exception )其中,第一个也是唯一一个参数是包含抛出的异常的详细信息的对象。
你遇到的问题是异常和错误没有相同的回调签名。当您适当地处理异常时,您正在使用不适当的回调来处理错误。
当你看到像8和2这样的数字时,你是在捕捉错误,当你看到exception对象时,你是在捕捉异常。
发布于 2011-01-16 01:40:31
我要补充的是,你得到的数字是错误的级别,在php中有为它们定义的常量,比如E_USER_ERROR,E_USER_WARNING,E_USER_NOTICE。
https://stackoverflow.com/questions/4701023
复制相似问题