C#值已声明但从未使用过

JL.*_*JL. 9 c#

我试着抓住我捕捉不同错误类型的地方:

catch (XmlException XmlExp)
{
    return false; 
}

catch (XmlSchemaException XmlSchExp)
{
    return false; 
}
catch (Exception GenExp)
{
    throw GenExp;
}
Run Code Online (Sandbox Code Playgroud)

请注意,XMLException XMLExp已声明但从未使用过.是否可以在不声明局部变量的情况下捕获XMLException?

这是有效的代码:

catch (XmlException)
{
    return false; 
}
Run Code Online (Sandbox Code Playgroud)

Mar*_*ann 17

是的,就像这样

catch (XmlException)
{
    return false; 
}

catch (XmlSchemaException)
{
    return false; 
}

catch (Exception GenExp)
{
     // inspect or use GenExp
     throw;
}
Run Code Online (Sandbox Code Playgroud)

  • 请改用catch(Exception){throw}.这样可以保持stracktrace信息的正确性.重新抛出异常会破坏原始的堆栈跟踪 (14认同)
  • @Sander - 如果它只是重​​新抛出,或者只是完全省略那个catch块 (3认同)

Mat*_*att 6

做这个

catch (XmlException)
{
   return false; 
}

catch (XmlSchemaException)
{
   return false; 
}

catch (Exception)
{
   throw;
}
Run Code Online (Sandbox Code Playgroud)


rah*_*hul 5

只是用

catch (XmlException)
{
    throw;
}
Run Code Online (Sandbox Code Playgroud)

当您抛出特定的异常对象时,如throw ex堆栈跟踪被覆盖.