如何从Exception对象获取堆栈跟踪?我特别想提取调用堆栈和行号,给定一个Exception。
我试过这个:
function do_it(int $x, int $y): void {
try {
$result = $x / $y;
}
catch (Exception $ex) {
echo "Caught an Exceptionn";
$ex::getTrace();
}
}
<<__EntryPoint>>
function main(): void {
do_it(100, 0);
}
但我得到了输出:
Caught an Exception
Fatal error: Uncaught exception 'BadMethodCallException' with message 'Non-static method Exception::getTrace() cannot be called statically' in /Users/navyazaveri/hack_stuff/first.hack:9
Stack trace:
#0 /Users/navyazaveri/hack_stuff/first.hack(15): do_it()
#1 (): main()
#2 {main}
Exception::getTrace()
和PHP中一样,有一个包含文件、行、函数和参数的堆栈跟踪详细信息数组,但入口点没有行号或参数(截至4.42(。