哪一个是与UI层try-catch和n层应用程序中的良好实践的良好组合以及为什么?
1
try
{
//Statements
}
catch
{
throw
}
finally
{
//cleanup codes
}
OR
2
try
{
// statements
}
catch(Exception ex)
{
}
finally
{
// clean up
}
并在UI图层中
try{
}
catch(Exception ex)
{
Log(ex);
}
finally
{
//clean up
}
答案 0 :(得分:1)
在第一个中,catch
和throw
完全没有意义,如果你想确保清理,你应该使用try
和finally
。
第二种是危险的,永远不应该使用。代码不应该包含吞噬每个异常的catch,只是在没有解释的情况下忽略它。在极少数情况下,您需要捕获异常并忽略它,您应该尝试将其限制为特定类型的异常,并且应始终在代码中包含注释,以解释忽略异常的原因。
第三个例子很好用。我假设您在try
块中有更多异常处理,它捕获您预期的特定异常类型,并在需要时通知用户该问题。
答案 1 :(得分:0)
通常的做法是在业务/服务层使用try / finally(或using语句),以确保正确清理资源。
在物理层边界,您可能需要长期例外,因此您可能会遇到以下情况:
try
{
}
catch(Exception ex)
{
... log exception
throw;
}
也许是UI层中的顶级异常处理程序(try / catch)。