我很想知道是否应该最小化try / catch块中的代码,否则它确实无关紧要。
public bool ObjectExists(string stringTest, string againSomethingElse)
{
if(true) {}
else {} //Code here is better/worst/same
try
{
//Versus code inside try/catch block
}
catch (Exception)
{
throw;
}
}
答案 0 :(得分:10)
在.net中,如果实际抛出异常,try / catch只会产生开销。所以不要过分担心在try
内部使用代码会对性能产生什么影响。只是不要将异常作为一种流控制形式抛出。
答案 1 :(得分:6)
这是解决此问题的正确方法。
首先编写代码,以便异常处理为CORRECT。始终保持正确性。
然后设定合理的,以客户为中心的绩效目标。然后测试你的程序。然后,如果您没有达到目标,请使用分析器找到最慢的东西。如果一些奇怪的巧合最慢的事情恰好是你正确的异常处理,那么你才应该考虑异常处理的性能成本是什么。
答案 2 :(得分:3)
我同意递归,但你可能想看一个很好的解释: http://www.programmersheaven.com/user/pheaven/blog/175-Do-trycatch-blocks-hurt-runtime-performance/
基本上,使用try..catch没有问题,但是,我倾向于限制我在其中的内容,因为我认为依赖它们是不好的做法,而不是尽你所能来确保不抛出异常因为异常将是昂贵的,所以,在获得它的长度之前检查该字符串是否为空。
答案 3 :(得分:3)
我同意上述内容但你不应该把你的整个代码块放在try catch中,让它捕获一个formatexception或null引用。您应该为这些代码编写代码并自行处理。
我不知道有多少次见过:
try {
Request.QueryString["id"].ToString();
}
如果id为null,显然是空引用,所以检查它是否为null,不要尝试/捕获它。