首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >set_error_handler和set_exception_handler

set_error_handler和set_exception_handler
EN

Stack Overflow用户
提问于 2011-01-16 01:27:42
回答 3查看 2K关注 0票数 0

我使用以下函数来设置错误控制:

代码语言:javascript
复制
set_error_handler
set_exception_handler

当发生错误时,它调用此函数来捕获错误并将其存储到数据库中,然后将用户重定向到通用页面

代码语言:javascript
复制
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。你可以在我的错误日志中看到这两个数字。我的问题是,这些数字意味着什么?当我查找它时,它是有意义的,因为有文件的错误代码,但我现在得到的错误与文件无关。我假设它们是错误代码,那么有什么方法可以获得可以返回的错误代码列表呢?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-01-16 01:35:31

似乎您对异常处理程序和错误处理程序都使用了相同的回调,这两个处理程序不会传递相同类型的参数。

看看set_error_handler文档,第一个参数是错误代码,第二个参数是错误字符串。未传递任何对象

http://php.net/set_error_handler

有关错误代码,请检查以下内容:

http://php.net/manual/en/errorfunc.constants.php

票数 2
EN

Stack Overflow用户

发布于 2011-01-16 01:35:12

error_handler回调函数的签名如下:

代码语言:javascript
复制
handler ( int $errno , string $errstr [, string $errfile [, int $errline [, array $errcontext ]]] )

第一个参数是错误号,第二个参数是描述错误的字符串。

同时,exception_handler有一个带有这个签名的函数:

代码语言:javascript
复制
handler ( object $exception )

其中,第一个也是唯一一个参数是包含抛出的异常的详细信息的对象。

你遇到的问题是异常和错误没有相同的回调签名。当您适当地处理异常时,您正在使用不适当的回调来处理错误。

当你看到像82这样的数字时,你是在捕捉错误,当你看到exception对象时,你是在捕捉异常。

票数 2
EN

Stack Overflow用户

发布于 2011-01-16 01:40:31

我要补充的是,你得到的数字是错误的级别,在php中有为它们定义的常量,比如E_USER_ERROR,E_USER_WARNING,E_USER_NOTICE。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4701023

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档