2009-09-29 103 views
2

当我在http://us2.php.net/manual/en/exception.gettrace.php上运行示例代码时,我在回溯中没有得到“args”,就像在示例输出中那样。异常在回溯中缺少参数

这是一个PHP的错误还是我错过了什么?

我的输出:

阵列(1){[0] =>数组(3){[ “文件”] =>串(25)“d:\ WWW \项目\的index.php “[”line“] => int(79)[”function“] => string(4)”test“}}

我正在运行PHP 5.2.8。

编辑:示例输出来自运行PHP.net的示例代码,该函数有参数或没有参数。

+0

你可以插入引发异常的代码吗? – Neel 2009-09-29 13:07:46

+0

@Znarkus再次阅读问题,正在使用的代码是OP链接的示例页面上的代码。 – jakeisonline 2009-09-29 13:10:14

+0

如果将参数传递给函数会发生什么? – NDM 2009-09-29 13:53:57

回答

0

我试图升级到PHP 5.2.9(XAMPP 1.7.1),但它没有工作。但是当我在运行PHP 5.2.11的Linux环境中尝试时,它确实有效。我在下面发布了完整的测试代码。

<?php 

error_reporting(E_ALL | E_STRICT); 
header('Content-type: text/plain; charset=utf-8'); 

function a($a) { 
    throw new Exception2('EXCEPTION MESSAGE'); 
} 

function b($b) { 
    a($b); 
} 

try { 
    b('THIS PARAMETER SHOULD SHOW UP'); 
} catch(Exception $e) { 
    var_dump($e); 
} 


class Exception2 extends Exception 
{ 
    public function __construct() 
    { 
     $args = func_get_args(); 
     call_user_func_array(array($this, 'parent::__construct'), $args); 

     var_dump(debug_backtrace()); 
    } 
} 

感谢您的帮助!

+0

好thnx, 以为我疯了,但它毕竟是一个错误... – Deefjuh 2009-10-09 12:24:22

1

嗯奇怪。

以下(一个类)确实可以工作......但它仍然应该给出参数,即使您将它重载到一个非常规函数。

<?php 
class Test{ 
    function __construct($arg){ 
     $this->test($arg); 
    } 
    function test($args) { 
    throw new Exception; 
    } 
} 

try { 
    new Test('Yar'); 
} catch(Exception $e) { 
//print_r(debug_backtrace()); 
var_dump($e->getTrace()); 
} 
?> 
1

我刚在我的本地安装,它似乎为推动工作,虽然我跑5.3个大气压......

它仍然应该给至少一个空数组,即使没有传递参数...

尝试google搜索错误您具体的PHP版本,或搜索php.net bug tracker