【发布时间】:2011-05-31 23:03:45
【问题描述】:
在 C# 中,throw ex 几乎总是错误的,因为它会重置堆栈跟踪。
我只是想知道,这在现实世界中有什么用途吗?我能想到的唯一原因是隐藏封闭库的内部结构,但这是一个非常薄弱的理由。除此之外,我从未在现实世界中遇到过。
编辑:我的意思是throw ex,就像抛出与捕获的完全相同的异常,但堆栈跟踪为空,就像做错了一样。我知道 throw ex 必须作为一种语言结构存在以允许抛出不同的异常 (throw new DifferentException("ex as innerException", ex)),我只是想知道是否存在 throw ex 没有错的情况。
【问题讨论】:
-
你的意思是
throw ex;还是throw;? -
@Andrew 编辑了问题。我的意思是扔前任,只是想知道是否有没有错的情况。
-
我认为这就是您的意思,但我认为这可能有助于澄清这一点,因为这似乎有些混乱(例如,假设您错误地表示
throw;) -
我知道这已经过时了..但这周我只是在想同样的事情。似乎它至少是编译器警告的理想候选者!
-
@MrMoose Damien_The_Unbeliever 的回答说明了为什么不是这样。
标签: c# .net exception-handling