如何显示导致异常的行,而不是异常发生的位置?

时间:2013-04-21 02:42:15

标签: php exception

如果函数抛出异常,因为调用代码没有正确调用它,如何使错误显示调用代码的文件和行号而不是(或除了)抛出异常的行?

即:

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(); 

1 个答案:

答案 0 :(得分:1)

这有几个选择;

滚动自己的

使用PHP中的debug_print_backtrace()函数,您可以创建自己的输出。

预先构建的库,用于输出堆栈跟踪

您还可以安装令人敬畏的whoops软件包以更好地输出问题以及代码如何到达,请在此处查看:https://github.com/filp/whoops

Xdebug的

由于更好​​的var_dump()输出以及其他巨大的优势,这是首选。安装后,它只会使您的所有调试和错误输出更具洞察力,更易于阅读。

安装xdebug以显示导致问题的整个事件流的更详细的输出,称为堆栈跟踪。