仅在项目处于调试模式下抛出异常

3

我正在开发一个ASP.NET Web Forms应用程序。我有很多函数在特定情况下会抛出异常。但是有很多函数,我不想每次更新应用程序时都删除并添加throw ex;语句。那么,是否有办法可以检查项目是否处于调试模式?(即检查web.config中的debug="true")。

try{
     //some code
}
catch (Exception ex)
{
     if(//----what condition to check debug mode?----)
         throw ex;
}

2
这是您想要的吗?https://dev59.com/5mQo5IYBdhLWcg3wDbwJ - Equalsk
8
在catch块内永远不要使用 "throw ex",因为这会破坏堆栈信息。应该改用 "throw;"。 - Erik
1个回答

7
您可以使用#if编译器指令:
#if(DEBUG)
/// do your thing
#endif

4
一种替代方案是使用 [Conditional("DEBUG")] 属性,该属性可设置在内部抛出异常的方法上。编译器会检查条件属性,如果您没有处于调试模式,则方法调用会完全被从 MSIL 中移除。 - George Lica
1
@GeorgeLica 显然更加简洁,但需要记住它适用于整个方法...你可以编写一个带有该属性应用的操作委托的方法。这将使事情变得更加简洁。 - Aydin
1
非常优雅!非常好!这就是我喜欢编程的原因,它就像艺术一样:无尽的可能性和无尽的风格可以塑造你的代码。 - George Lica

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接