2009-09-29 13 views
2

Lorsque je cours l'exemple de code à http://us2.php.net/manual/en/exception.gettrace.php je ne reçois pas "args" dans le backtrace, comme il est dans l'exemple de sortie.Les exceptions sont manquantes args dans backtrace

Est-ce un bug PHP ou est-ce que je manque quelque chose?

Ma sortie:

array (1) {[0] => array (3) {[ "file"] => string (25) « D: \ www \ projet \ index.php "[" line "] => int (79) [" function "] => chaîne (4)" test "}}

Je cours PHP 5.2.8.

Editer: L'exemple de sortie est l'exécution de l'exemple de code PHP.net, avec ou sans arguments à la fonction.

+0

Pouvez-vous insérer le code dans lequel l'exception a été levée? – Neel

+0

@Znarkus Lire à nouveau la question, le code utilisé est celui sur la page d'exemple liée par l'OP. – jakeisonline

+0

Et que se passe-t-il si vous passez des arguments à la fonction? – NDM

Répondre

0

J'ai essayé de passer à PHP 5.2.9 (XAMPP 1.7.1), mais ça n'a pas marché. Mais quand j'ai essayé sur un environnement Linux exécutant PHP 5.2.11, cela a fonctionné. J'ai posté le code de test complet ci-dessous.

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

Merci pour votre aide!

+0

Ok thnx, pensé que je devenais fou, mais c'était un bug après tout ... – Deefjuh

1

Hmm étrange. Ce qui suit (une classe) fonctionne bien ... Mais il devrait toujours donner les arguments, même si vous le surchargez à une fonction nomrale.

<?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

Je viens d'essayer sur mon installation locale, et il ne semble travailler promu, même si je suis en cours d'exécution 5.3 atm ...

Il devrait encore donner au moins un tableau vide , même si aucun argument ne ...

essayer googler un bug sur votre version de PHP spécifique ou rechercher le php.net bug tracker

Questions connexes