在 .NET 中优雅地处理异常:保留关键细节
在 .NET 应用程序中处理异常并重新抛出异常时,保留原始异常的上下文(包括 InnerException
和堆栈跟踪)至关重要。 两种常见的重新抛出方法是:
<code class="language-csharp">try { // Code that might throw an exception } catch (Exception ex) { throw ex; // Method 1 }</code>
<code class="language-csharp">try { // Code that might throw an exception } catch { throw; // Method 2 }</code>
堆栈跟踪保存的重要性:
维护原始堆栈跟踪对于调试至关重要。 使用 throw;
(方法 2)是实现此目的的首选方法;它重新抛出异常而不改变其堆栈跟踪。相比之下,throw ex;
(方法 1)从 throw
语句开始创建一个新的堆栈跟踪,从而丢失有关异常来源的有价值的信息。
用上下文信息丰富异常:
有时,向重新抛出的异常添加额外的上下文是有益的。这可以通过创建一个新的异常实例并将原始异常作为 InnerException
:
<code class="language-csharp">try { // Code that might throw an exception } catch (Exception ex) { throw new CustomException(ex, "Additional error details."); }</code>
主要建议:
throw;
以避免丢失原始异常的上下文。以上是在 .NET 中重新抛出时如何保留异常详细信息?的详细内容。更多信息请关注PHP中文网其他相关文章!