0

如果函数由于调用代码未正确调用而引发异常,如何使错误显示调用代码的文件和行号,而不是(或除了)引发异常的行?

IE:

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

1 回答 1

1

有几个选择;

自己滚

使用 PHP 中的debug_print_backtrace()函数,您可以制作一些东西来显示您自己的输出。

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

您还可以安装很棒的whoops包以获得更好的问题输出以及代码如何到达那里,请在此处查看:https ://github.com/filp/whoops

Xdebug

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

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

于 2013-04-21T03:35:12.893 回答