我正在我的应用程序中构建一个基本的错误记录功能,我只记录一个自定义消息,例如“缺少产品ID”并将其记录在数据库中。有没有什么方法可以动态捕获错误被触发的类或函数(即调用log_error()的函数)或行号?
答案 0 :(得分:3)
从PHP 5.2.0开始,有error_get_last()。 (干杯@Gordon)它将为您提供一个数组,其中包含有关上一个错误的所有信息:
Array
(
[type] => 8
[message] => Undefined variable: a
[file] => C:\WWW\index.php
[line] => 2
)
一般来说,处理错误的更灵活的方法是定义custom error handler。
自定义错误处理程序接受以下参数:
handler ( int $errno, string $errstr [, string $errfile
[, int $errline [, array $errcontext ]]] )
<强>回溯强> 使用回溯获得的最多信息 - 在许多情况下很有用。为此,请将错误处理程序与debug_backtrace()结合使用。它将为您提供一个包含调用堆栈中每个点的数组(即调用哪个函数调用哪个函数,直到错误。)
堆栈跟踪需要花费大量的计算时间,所以你不应该在生产中使用它们并且有一个开关来打开和关闭它们。
答案 1 :(得分:1)
不要忘记magic constants!
_________ LINE_______行号。
答案 2 :(得分:0)
如果您使用的是Exceptions,则可能有办法:Exception
class中有一个getLine()
方法,可以让您知道抛出异常的位置。
如果您正在使用功能,则没有“真实”的方式;一个解决方案可能是使用debug_backtrace
函数 - 请参阅手册页,了解它可以为您提供的信息示例......
答案 3 :(得分:0)
您可以轻松地使代码出现错误,如
$get = mysql_query("SELECT * FROM 'table' where id='.....'");
$row = mysql_fetch_array($get);
if (!$row)
{
//record the data now
}