PHP Doku:: Gibt den Stacktrace zurück - exception.gettrace.html

Verlauf / Chronik / History: (1) anzeigen

Sie sind hier:
Doku-StartseitePHP-HandbuchSprachreferenzVordefinierte ExceptionsExceptionException::getTrace

Ein Service von Reinhard Neidl - Webprogrammierung.

Exception

<<Exception::getLine

Exception::getTraceAsString>>

Exception::getTrace

(PHP 5 >= 5.1.0)

Exception::getTraceGibt den Stacktrace zurück

Beschreibung

final public array Exception::getTrace ( void )

Gibt den Stacktrace der Exception zurück.

Parameter-Liste

Diese Funktion hat keine Parameter.

Rückgabewerte

Gibt den Stacktrace der Exception als Array zurück.

Beispiele

Beispiel #1 Exception::getTrace()-Beispiel

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

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

Das oben gezeigte Beispiel erzeugt eine ähnliche Ausgabe wie:

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


Ein BenutzerBeitrag:
- Beiträge aktualisieren...
andreas at cap-systems dot com
9.06.2010 21: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();



PHP Powered Diese Seite bei php.net
The PHP manual text and comments are covered by the Creative Commons Attribution 3.0 License © the PHP Documentation Group - Impressum - mail("TO:Reinhard Neidl",...)