实例一:
<?php
function test() {
throw new Exception;
}
try {
test();
} catch(Exception $e) {
var_dump($e->getTrace());
}
?>
它的输出是:
实例二:
<?php
try{
throw new Exception;
}catch(Exception $e){
var_dump($e->getTrace());
}
?>
为什么这个实例输出的是一个一维空数组?
因为
getTrace()
返回的是函数调用堆栈,实例二没有函数调用,所以返回空数组。不嫌麻烦的话,可以用php-stacktrace查看函数调用堆栈。试过了,php-stacktrace在catch里是看不到test()
的,产生异常的时候就记录了堆栈,然后就unwind 了。