downloads | documentation | faq | getting help | mailing lists | licenses | wiki | reporting bugs | php.net sites | links | conferences | my php.net

search for in the

Exception::getTraceAsString> <Exception::getLine
[edit] Last updated: Fri, 25 May 2012

view this page in

Exception::getTrace

(PHP 5 >= 5.1.0)

Exception::getTraceObtiene el seguimiento de la pila

Descripción

final public array Exception::getTrace ( void )

Devuelve el seguimiento de pila de excepción.

Parámetros

Esta función no tiene parámetros.

Valores devueltos

Devuelve el seguimiento de pila de excepción como un array.

Ejemplos

Ejemplo #1 Exception::getTrace() example

<?php
function test() {
 throw new 
Exception;
}

try {
 
test();
} catch(
Exception $e) {
 
var_dump($e->getTrace());
}
?>

El resultado del ejemplo sería algo similar a:

array(1) {
  [0]=>
  array(4) {
    ["file"]=>
    string(22) "/home/bjori/tmp/ex.php"
    ["line"]=>
    int(7)
    ["function"]=>
    string(4) "test"
    ["args"]=>
    array(0) {
    }
  }
}



add a note add a note User Contributed Notes Exception::getTrace
sam at notmyrealemail dot org 17-Feb-2012 03:26
Two important points about this function which are not documented:

1) The trace does not include the file / line at which the exception is thrown; that entry is only recorded in the top-level getFile/Line methods.

2) Elements are returned in 'closest-first' order, e.g. if you have a script x which calls function y which calls function z which throws an exception, then the first trace element will be 'Y' and the second will be 'X'.
andreas at cap-systems dot com 09-Jun-2010 12:55
When calling getTrace(), there is also the name of the class in returned array:

<?php
 
class Test {

    function
__construct() {

      throw new
Exception('FATAL ERROR: bla bla...');

    }

  }

  try {

   
$obj = new Test();

  } catch(
Exception $e) {

   
var_dump($e->getTrace());

  }
?>

Will show something like:

array(1) {
  [0]=>  array(6) {
               ["file"]=>  string(54) "/....../test.php"
               ["line"]=>  int(37)
               ["function"]=>  string(11) "__construct"
               ["class"]=>  string(4) "Test"
               ["type"]=>  string(2) "->"
               ["args"]=>  array(0) { }
             }
}

You can use this function to format a exception:

<?php
 
function MakePrettyException(Exception $e) {
   
$trace = $e->getTrace();

   
$result = 'Exception: "';
   
$result .= $e->getMessage();
   
$result .= '" @ ';
    if(
$trace[0]['class'] != '') {
     
$result .= $trace[0]['class'];
     
$result .= '->';
    }
   
$result .= $trace[0]['function'];
   
$result .= '();<br />';

    return
$result;
  }

 
//Example:
 
try {

   
$obj = new Test();

  } catch(
Exception $e) {

    echo
MakePrettyException($e);

  }

?>

Result:

Exception: "FATAL ERROR: bla bla..." @ Test->__construct();

 
show source | credits | sitemap | contact | advertising | mirror sites