我可以从try-catch的catch块中删除e吗?

时间:2016-10-25 07:12:36

标签: c# .net exception exception-handling try-catch

catch (HttpAntiForgeryException e)
{
    throw new HttpAntiForgeryException("Forgery Exception");
}

当我构建项目时,会有一个警告:变量'e'已声明但从未使用过。 那是因为e不是必要的吗?

3 个答案:

答案 0 :(得分:2)

是。你可以简单地写一下

catch (HttpAntiForgeryException)
{
    throw new HttpAntiForgeryException("Forgery Exception");
}

但是,你正在重新抛出相同类型的异常。您也可以简单地删除此catch块。

答案 1 :(得分:2)

没有必要,如果您不想对异常做任何事情,在您的情况下,您正在抛出自定义消息,因此可以这样使用:

catch 
{
   throw new HttpAntiForgeryException("Forgery Exception");
}

或者像这样:

// For specific exception
catch (HttpAntiForgeryException)
{
       throw new HttpAntiForgeryException("Forgery Exception");
}

但是你不会获得有关此异常的任何信息,例如错误消息,堆栈跟踪,内部异常等。我更喜欢你在Catch中处理异常,或者properly log它们是开发人员的参考

答案 2 :(得分:2)

这是因为您没有在catch块的任何位置使用Variable e。您可以轻松捕获该异常,这样您就可以更好地了解异常的根本原因而不是抛出新的异常。

catch (HttpAntiForgeryException e)
{
    Console.WriteLine(e.Message); // Console.Writeline or whichever way you want      
}