C# 与在try、catch块之外运行代码相比,是否有任何性能优势?

C# 与在try、catch块之外运行代码相比,是否有任何性能优势?,c#,.net,try-catch,C#,.net,Try Catch,我很想知道是应该最小化try/catch块中的代码,还是真的不重要 public bool ObjectExists(string stringTest, string againSomethingElse) { if(true) {} else {} //Code here is better/worst/same try { //Versus code inside try/catch bl

我很想知道是应该最小化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;
        }
    }

在.net中,只有在实际引发异常时,try/catch才会产生开销。因此,不要太担心将代码放在
try
中对性能的影响。只是不要将抛出异常作为流控制的一种形式。

在.net中,try/catch只会在实际抛出异常时产生开销。因此,不要太担心将代码放在
try
中对性能的影响。只是不要将异常作为流控制的一种形式抛出。

我同意递归,但您可能希望看到一个很好的解释:


基本上,使用try..catch没有问题,但是,我倾向于限制它们中的内容,因为我认为依赖它们而不是尽可能确保不会抛出异常是一种不好的做法,因为异常会很昂贵,因此,在获取字符串长度之前,请检查该字符串是否为null

我同意recursive,但您可能想看看一个很好的解释:


基本上,使用try..catch没有问题,但是,我倾向于限制它们中的内容,因为我认为依赖它们而不是尽可能确保不会抛出异常是一种不好的做法,因为异常会很昂贵,因此,在获取字符串长度之前,请检查该字符串是否为null

我同意上面的说法,但您不应该将整个代码块放在try-catch中,让它捕获formatexception或null引用。您应该为它们编写代码并自己处理它们

我不知道我见过多少次:

try {
 Request.QueryString["id"].ToString();
}

显然,如果id为null,则为null引用,因此请检查它是否为null,不要尝试/捕获它。

我同意上述观点,但您不应该将整个代码块放在try-catch中,让它捕获formatexception或null引用。您应该为它们编写代码并自己处理它们

我不知道我见过多少次:

try {
 Request.QueryString["id"].ToString();
}

显然,如果id为null,则为null引用,因此请检查它是否为null,不要尝试/捕获它。

以下是解决此问题的正确方法

首先编写代码,以便异常处理是正确的。总是正确第一


然后设定合理的、以客户为中心的绩效目标。然后测试你的程序。然后,如果你还没有达到你的目标,用一个分析器来找出最慢的东西。如果一些奇怪的巧合中最慢的事情恰好是你正确的异常处理,那么你就应该考虑异常处理的性能成本是什么。p> 下面是解决这个问题的正确方法

首先编写代码,以便异常处理是正确的。总是正确第一


然后设定合理的、以客户为中心的绩效目标。然后测试你的程序。然后,如果你还没有达到你的目标,用一个分析器来找出最慢的东西。如果一些奇怪的巧合中最慢的事情恰好是你正确的异常处理,那么你就应该考虑异常处理的性能成本是什么。p> +1-关于什么时候不抛出异常的最后一句话。+1-关于什么时候不抛出异常的最后一句话。+1是的……Eric在C上闲逛,又是带标签的问题:)+1是的……Eric在C上闲逛,又是带标签的问题:)