我正在重构其他开发人员编写的中型WinForms应用程序,几乎每个类的每个方法都被try-catch
块包围。这些catch块有99%的时间仅记录异常或清除资源并返回错误状态。
我认为很明显,该应用程序缺少适当的异常处理机制,并且我计划删除大多数try-catch块。
这样做有什么缺点吗?你会怎么做?我打算:
要适当地记录异常并防止其传播给用户,请使用Application.ThreadException
处理程序
对于有需要清理的资源的情况,请保持try-catch块不变
] >>更新
using
或try-finally
块是更好的方法。感谢您的答复。欢迎任何更正/建议。
编辑:
在第三项中,“返回错误时出错”是指这样的方法:bool MethodThatDoesSomething() { try { DoSomething(); // might throw IOException } catch(Exception e) { return false; } }
我想将其重写为:
void MethodThatDoesSomething() {
DoSomething(); // might throw IOException
}
// try-catch in the caller instead of checking MethodThatDoesSomething's return value
try {
MethodThatDoesSomething()
} catch(IOException e) {
HandleException(e);
}
我正在重构其他开发人员编写的中型WinForms应用程序,几乎每个类的每个方法都被try-catch块包围。这些捕获块有99%的时间仅记录...
“要适当地记录异常并防止其传播给用户,请使用Application.ThreadException处理程序”
为了进行清理,请按照Amittai的建议使用try-finally
或实施IDisposable
。对于在错误时返回bool的方法,请尝试,如果不满足条件,则返回false。范例。
作为“返回错误时出错”的选项,您可以通过以下方式清理代码:
[最好是按照别人的说法,在1个地方进行异常处理。隐藏隐藏的异常而不是冒出来的错误做法。
您应该仅