我的网页中有以下代码:
btnTest_Click(object sender, EventArgs e)
{
...
bool ret=myFunc(...);
if (ret)
{...}
else
{
lblStatus.Text="Some Text";
lblStatus.Visible=true;
}
}
private bool myFunc(...)
{
bool ret=false;
try
{
...
ret=true;
}
catch (Exception ex)
{
lblStatus.Text="Other Text";
lblStatus.Visible=true;
}
return ret;
}
如果myFunc中发生异常,则lblStatus始终显示“某些文本”而不是“其他文本”。这意味着myFunc中的catch块实际上没有任何意义。我想知道如何解决此代码以更好地处理异常?
更新:也许我的榜样不是很好。但是我的主要目的是询问最佳实践,以了解调用和被调用函数之间的异常处理。
您的catch
条款做了很多事情。它捕获每个异常并“忘记”它,将其抑制到调用堆栈的其余部分。这可能很好,但是我将尽力解释您的选择:
您通常有3个选择:
我全部使用。
选项1
您可以只实现您的功能,如果发生异常,则意味着发生了一些错误,并且您只是希望您的应用程序失败(至少到一定程度)
选项2
发生某些异常,您需要做两个(或什至两个)之一
选项3该异常是预料之中的,您知道如何完全对其进行反应。例如,在您的情况下,我倾向于认为您不在乎异常的类型,而是希望通过将某些控件设置为给定的文本来实现“良好的默认设置”。
结论
没有银弹。为每种情况使用最佳选项。然而,捕获和“抑制”catch(Exception ex)
是很少见的,如果经常看到,通常意味着不好的编程。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句