函式名稱:Exception::getTrace()
適用版本:所有 PHP 版本
用法:Exception::getTrace() 方法用於獲取當前異常的堆疊跟蹤資訊。它返回一個由堆疊幀組成的陣列,每個堆疊幀都是一個關聯陣列,包含以下鍵值對:
- file:包含堆疊幀所在的檔名。
- line:包含堆疊幀所在的行號。
- function:包含堆疊幀所呼叫的函式或方法名。
- class:如果堆疊幀是在類內部呼叫的,這個鍵將包含呼叫該方法的類名。
- type:如果堆疊幀是在類內部呼叫的,這個鍵將為
->
,表示物件方法呼叫;如果是靜態方法呼叫,鍵將為::
。 - args:包含傳遞給函式或方法的引數陣列。
示例:
try {
// 假設發生了一個異常
throw new Exception('Something went wrong');
} catch (Exception $e) {
// 獲取堆疊跟蹤資訊
$trace = $e->getTrace();
// 遍歷堆疊跟蹤資訊並列印每個堆疊幀的資訊
foreach ($trace as $frame) {
$file = $frame['file'];
$line = $frame['line'];
$function = isset($frame['function']) ? $frame['function'] : '';
$class = isset($frame['class']) ? $frame['class'] : '';
$type = isset($frame['type']) ? $frame['type'] : '';
$args = isset($frame['args']) ? $frame['args'] : [];
echo "File: $file<br>";
echo "Line: $line<br>";
echo "Function: $function<br>";
echo "Class: $class<br>";
echo "Type: $type<br>";
echo "Args: " . implode(', ', $args) . "<br><br>";
}
}
注意:Exception::getTrace() 方法必須在異常被 catch 後呼叫,才能獲取到有關該異常的堆疊跟蹤資訊。