我在代码中有很多部分
try
{
// not so important code, but don't want this to affect anything else
}
catch
{
}
使用这被认为是一种不好的做法吗?
Try(() =>
{
});
void Try(Action a)
{
try
{
a();
}
catch
{
// ignore.
}
}
答案 0 :(得分:5)
当然,你总是可以添加一个异常处理程序:
void Try(Action a, Action<Exception> onErr)
{
try
{
a();
}
catch (Exception e)
{
onErr(e);
}
}
然后你就有了:
Try(
()=> { /* do something */ }
e => { } );
你可以有一个标准的空犯人
static void IgnoreError(Exception e)
{
#if DEBUG
throw e;
#end if
}
Try(
()=> { /* do something */ }
IgnoreError );
我认为这不是那么糟糕,但它非常不标准 - 你的代码会让人感到困惑,我认为它不会增加任何东西。考虑这一点很有意思,但我认为你的代码最终会让人感到困惑。
此外,虽然在某些情况下您可能希望忽略异常,但实际上并不希望这样做更容易。
答案 1 :(得分:3)
如果你真的不关心“不重要”代码的作用,那么我会说没关系。使用lambda使它更具可读性,但它也可以隐藏你“吞下”异常的事实。我个人喜欢把它留在那里,所以它是明确的,并在空的catch块中添加注释,解释为什么可以忽略任何错误。当然,评论是针对每种情况的。
答案 2 :(得分:3)
吞咽异常通常被认为是不好的做法,因为这会使程序的维护变得困难。
但是,将所有异常处理移至中心位置可能是朝着正确方向迈出的一步,因为它允许您在未经过整个代码库的情况下至少记录异常情况。
只要它局限于你真正不关心异常发生的地方,它就可以是一个积极的变化。
答案 3 :(得分:0)
void Try (Action a)
相当模糊,其他方法更容易阅读
答案 4 :(得分:0)