【发布时间】:2015-02-08 10:44:30
【问题描述】:
学习记录错误。 这是贯穿我整个项目的基本代码结构。
我被告知,try 块只能放在事件处理程序中。
但是在记录错误时,需要知道是哪个方法导致了错误。
所以,在这种情况下,我是否也应该在AllIsFine() 和SaveData() 中保留try 块。
如果是,那么它应该记录错误还是只记录throw。
最佳/标准做法是什么。
DataContext objDataContext = new DataContext();
protected void btn_Click(object sender, EventArgs e)
{
try
{
if(AllIsFine())
{
objDataContext.SaveData();
}
}
catch(Exception ex)
{
//some handling
}
}
private bool AllIsFine()
{
//some code
}
编辑:当然,我们会尝试确保它永远不会引发异常,但不实用。我是这样看的。部署后,我唯一的访问权限是日志,需要获取尽可能多的信息。所以在这种情况下,(以及这种结构),你建议在哪里保留 try catch
【问题讨论】:
-
您也应该记录未处理的异常。例如,参见here。重新抛出和处理(以及非常重要的
finally概念)实际上与日志记录本身无关,但您当然要学习它。鉴于有关事件处理程序的建议在上下文中是有效的,不会有tryabove,因此您应该自己处理可能的异常,否则会出现未处理的异常(这将传播并导致您的应用程序崩溃) .
标签: c# .net exception-handling try-catch