所以我在Global.asax页面中处理项目中的所有异常。例如,在随机页面上我可以:
Protected Sub SomeFunction()
Try
'do something here
Catch ex As Exception
Throw ex
End Try
End Sub
然后异常冒泡到Global.asax页面,在那里我处理它并像这样登录到数据库:
Sub Application_Error(ByVal sender As Object, ByVal e As EventArgs)
Dim ex As Exception = Server.GetLastError
Dim loggedExceptionID As Integer = 0
Try
loggedExceptionID = New BLL.ExceptionHandler().LogException(ex)
Response.Redirect("~/ErrorPage.aspx?ID=" & loggedExceptionID, False)
Catch loggingError As Exception
'what do I do here?
End Try
End Sub
BLL.ExceptionHandler()。LogException(ex)函数只是将错误详细信息写入数据库。
所以我的问题是在Application_Error方法中,在尝试写入数据库时是否需要try / catch块?我想如果连接出现问题,我会这样做 - 但这真的有必要吗?另外,如果出现错误,我会在catch块中做什么?那时我会抓住记录错误的错误,这个错误本身就令人困惑。
答案 0 :(得分:1)
在那里进行try / catch可能是个好主意,我要做的是将详细信息写入文本文件或xml文件,以便将来可以参考这两个错误并尝试修复它们。那当然意味着你可能想要另外尝试/捕获写入磁盘,在这种情况下,我会放弃并称它为一天。 =)
在一个完全独立的说明中,你真的应该看看ELMAH:http://code.google.com/p/elmah/。这可能是你想要的一切,还有更多。