【问题标题】:Try/Catch in Global.asax while logging errors to db needed?在需要将错误记录到数据库时尝试/捕获 Global.asax?
【发布时间】:2011-05-04 15:44:12
【问题描述】:

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

【问题讨论】:

    标签: asp.net vb.net exception-handling exception-logging


    【解决方案1】:

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

    另外,您真的应该查看 ELMAH:http://code.google.com/p/elmah/。这可能会满足您的所有需求以及更多功能。

    【讨论】:

    • ELMAH 实际上看起来不错,但如果可能的话,我一直在寻找更快/更少涉及的解决方案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-06-22
    • 2021-10-14
    • 1970-01-01
    • 2015-04-24
    • 1970-01-01
    • 2013-02-16
    • 2011-02-26
    相关资源
    最近更新 更多