c# - 抛出新异常的最佳实践

标签 c# .net exception

<分区>

以下是良好做法吗?如果不是,应该怎么做?

catch(Exception e)
{
     throw new Exception(e.Message, e);
}

最佳答案

不,如果您使用相同的消息抛出另一个完全相同类型的异常,这不是好的做法。这样做会使堆栈跟踪复杂化并使调试变得更加痛苦。

如果您要抛出一个新的异常,它应该在某些重要方面与原来的不同。例如,它应该是另一种类型,或者以其他方式(如更具体的错误消息)阐明异常的原因。如果您不能执行其中任何一项操作,则只需使用 throw; 重新抛出当前异常即可。

或者,更好的是,根本不要捕获它。重新抛出实际上也稍微弄乱了堆栈跟踪(当前帧的错误位置设置为重新抛出点,而不是异常发生的地方),所以如果你没有任何个人必须做的事情来处理异常,然后放手——让它传播并让调用者处理它。

关于c# - 抛出新异常的最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12847637/

相关文章:

c# - Xamarin.Android 应用程序如何访问将复制到输出目录设置为 CopyAlways 的文件?

c# - 我可以实现 DisposeBase 抽象类吗?

c# - 从后台线程中找到前台线程

java - Spring boot @ExceptionHandler 未到达

java - SoapFaultMappingExceptionResolver 永远不会遇到常规 Java 异常

c# - 在 LINQ to SQL C# 中选择计数

c# - 按 ASC 顺序从 SQLServer 获取数据

c# - float 和百分比的正则表达式

c# - 需要一个关于如何从 Accept-Language 请求 header 中获取首选语言的示例

java - 如何从 Java 中的重写方法传播异常