2010-06-02 11 views
1

我通过我的Global.asax处理在这种方法的错误:尝试catch最终块..当我处理global.asax中的错误时,仍然需要它们吗?

Dim CurrentException As Exception 
CurrentException = Server.GetLastError() 
Dim LogFilePath As String = Server.MapPath("~/Error/" & DateTime.Now.ToString("dd-MM-yy.HH.mm") & ".txt") 
Dim sw As System.IO.StreamWriter = New System.IO.StreamWriter(LogFilePath) 
sw.WriteLine(DateTime.Now.ToString) 
sw.WriteLine(CurrentException.ToString()) 
sw.Close() 

在我的代码,我目前还没有其他的错误处理。我还应该插入try,catch,finally块吗?

谢谢。

回答

2

绝对。

您应该总是尽可能接近源处理异常。这可以让您做出适当的响应,例如重试失败的操作,关闭任何打开的资源,向用户提供反馈,或者编写比堆栈跟踪会给出的更多特定日志信息(上下文等)。

然后,您可以(如果你想)为你的全局“全部捕获”错误处理再次抛出异常,但除非它是一个微不足道或意外的情况,你应该从源头检查潜在的异常。当您正在编写的代码可能会相当合理地抛出一个异常(通常是文件IO等东西),但这并不一定表示致命错误时,尤其如此。

相关问题