1

所以我在我的 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 块中做什么?那时我会发现记录错误的错误,这本身就令人困惑。

4

1 回答 1

1

在那里尝试/捕获可能是个好主意,我要做的是将详细信息写入文本文件或 xml 文件,以便您将来可以参考这两个错误并尝试修复它们。这当然意味着您可能希望再次尝试/捕获写入磁盘,在这种情况下,我会放弃并收工。=)

在一个完全独立的注释中,您真的应该查看 ELMAH:http ://code.google.com/p/elmah/ 。这可能会做你想要的一切,还有更多。

于 2010-11-03T18:05:50.797 回答