【发布时间】:2016-04-27 16:36:32
【问题描述】:
在 C# 中,执行以下操作会破坏异常的堆栈跟踪:
try{
throw new RuntimeException();
}
catch(Exception e){
//Log error
//Re-throw
throw e;
}
因此,首选使用throw 而不是throw e。这将使相同的异常向上传播,而不是将其包装在一个新异常中。
但是,在 PHP 中使用 throw; 而不指定异常对象是无效的语法。这个问题在PHP中根本不存在吗?如下使用 throw $e 不会破坏堆栈跟踪吗?
<?php
try{
throw new RuntimeException();
}
catch(Exception $e){
//Log error
//Re-throw
throw $e;
}
【问题讨论】: