我认为抛出异常是一种好习惯,它可以使气泡回升到UI或您记录异常并通知用户的地方。
为什么reshaper说这是多余的?
try
{
File.Open("FileNotFound.txt", FileMode.Open);
}
catch
{
throw;
}
最佳答案
因为
try {
File.Open("FileNotFound.txt", FileMode.Open);
} catch {
throw;
}
没有什么不同
File.Open("FileNotFound.txt", FileMode.Open);
如果对
File.Open(string, FileMode)
的调用失败,则在任一示例中,完全相同的异常将一直存在到UI中。在上面的
catch
子句中,您只是在捕获并重新抛出异常,而无需执行其他任何操作,例如记录日志,回滚事务,包装异常以向其添加其他信息或所有其他操作。然而,
try {
File.Open("FileNotFound.txt", FileMode.Open);
} catch(Exception ex) {
GetLogger().LogException(ex);
throw;
}
不会包含任何冗余,ReSharper不应抱怨。同样
try {
File.Open("FileNotFound.txt", FileMode.Open);
} catch(Exception ex) {
throw new MyApplicationException(
"I'm sorry, but your preferences file could not be found.", ex);
}
不会是多余的。
关于exception-handling - 为什么resharper说 'Catch clause with single '抛出“语句是多余的”?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1019237/