在这样的情况下,最佳做法是什么:
try
{
// do something
}
catch (SpecificException ex)
{
Response.Redirect("~/InformUserAboutAn/InternalException/");
}
Run Code Online (Sandbox Code Playgroud)
我得到的警告ex是从未使用过的.
但是我需要的是告知用户,所以我不需要它.
我只是这样做:
try
{
// do something
}
catch
{
Response.Redirect("~/InformUserAboutAn/InternalException/");
}
Run Code Online (Sandbox Code Playgroud)
不知怎的,我不喜欢那样,看起来很奇怪!!?有小费吗?最佳做法?
处理这个问题的方法是什么.
日Thnx
你只是不声明变量:
try
{
// do something
}
catch (SpecificException)
{
Response.Redirect("~/InformUserAboutAn/InternalException/");
}
Run Code Online (Sandbox Code Playgroud)
捕获时这是一个没有实际意义的点System.Exception(在您的原始示例中,它与空的不完全相同catch- 例如,空的catch也会捕获COM异常),但这是正确的构造.
如果你通过其他分析引擎(例如Gendarme)运行你的代码,你也会被警告说,捕捉平原Exception是一种糟糕的做法,因为除了你真正想要捕获的内容之外,它还可以掩盖其他异常.在维护遗留代码的过程中,我咬了几次 - 我们正在捕捉并忽略Exception文件删除(或类似的东西),但主要逻辑无法正常工作.我们应该只抓住一个IOException,但我们抓住并丢弃NullReferenceException导致失败的那个.
那并不是说你永远不应该抓住Exception; 很少.