尝试Catch块太多会遇到性能下降的问题?任何替代方案?

时间:2012-03-13 17:03:42

标签: asp.net oop c#-4.0 try-catch

我正在使用带有.net框架的c#开发一个网站4.已经实现了OO概念。每个层都有一些Try Catch块,用于处理不同的错误并返回不同的错误消息。我发现它在加载时变得越来越慢,因为try catch块变得越来越多。我想知道这是因为为什么。任何替代方案?如果我错了,请纠正我。感谢任何回复。

3 个答案:

答案 0 :(得分:3)

使用try / catch块没有任何问题。它们不会改变性能。什么改变性能是错误!

请参阅下面的网站:

  

抛出异常可能非常昂贵,因此请确保不这样做   扔了很多。使用Perfmon查看您的例外情况   申请投掷。你可能会惊讶地发现这一点   您的应用程序区域会产生比预期更多的异常。对于   更好的粒度,您还可以检查异常编号   通过使用性能计数器以编程方式。

http://msdn.microsoft.com/en-us/library/ms973839.aspx

答案 1 :(得分:2)

异常通常帮助我们处理对象的错误初始化(创建具有无效状态的对象),因为构造函数不返回任何值,或者在另一种情况下,如果我们有一个返回对象实例的方法永远不应该为null。因此,在构造函数的情况下,您可以创建一个名为getInstance的静态方法,它将返回对象的实例,如果初始化错误则返回null,在这种情况下使构造函数为私有,但异常要好得多。如果返回实例的方法可以使用COM技术使用的技术,方法是将引用传递给您的布尔变量,该变量将显示执行结果。

答案 2 :(得分:2)

关于try / catch及其成本有一些好linksMicrosoft表示它会对效果产生负面影响。

我会检查您是否正在使用例外情况,特殊情况,而不是程序流程。如果它们确实影响了程序流程,那么您就有可能产生副作用。 MSDN声明:

  

抛出异常时清除中间结果。呼叫者   应该能够假设异常时没有副作用   是从方法抛出的

如果是这种情况,那么我会考虑创建在必要时显式返回错误的方法,并以此方式处理。