我了解throw
会保留调用堆栈,但throw ex
不会。
显然,我们发现或者我们看到很多用例
`throw`
`throw new exception("custom Message", ex)`
现在,让我感到困惑的是,如果throw ex
没有保留堆栈跟踪,为什么我应该使用它?
有理由使用throw ex
声明的任何实际情况吗?
答案 0 :(得分:3)
因为你对于抛出此抛出下面的堆栈跟踪不感兴趣,因为它已被记录在别处或者不需要调试处理异常。我甚至可以想象在不需要它的情况下揭露不正常的逻辑的一些偏执狂。 (在这种情况下,我希望看到自定义异常/自定义抛出,而不是抛出ex)
通常情况下 - 通常似乎是因为程序员不知道throw ex的副作用。