如果函数抛出异常,因为调用代码没有正确调用它,如何使错误显示调用代码的文件和行号而不是(或除了)抛出异常的行?
即:
class MyClass {
public function __call($MethodName, $Parameters)
{
if (!property_exists($this, $PropertyName))
throw new Exception('Error Getting Property: ' . $PropertyName . ' does not exist!');
// THIS line number appears in the exception, but
// is useless because it isn't the problem.
}
}
$MyClass = new MyClass();
// THIS line number should be in the exception,
// since its the line that's wrong.
$MyClass->GetSomethingThatDoesNotExist();
答案 0 :(得分:1)
这有几个选择;
使用PHP中的debug_print_backtrace()函数,您可以创建自己的输出。
您还可以安装令人敬畏的whoops软件包以更好地输出问题以及代码如何到达,请在此处查看:https://github.com/filp/whoops
由于更好的var_dump()输出以及其他巨大的优势,这是首选。安装后,它只会使您的所有调试和错误输出更具洞察力,更易于阅读。
安装xdebug以显示导致问题的整个事件流的更详细的输出,称为堆栈跟踪。