代码之家  ›  专栏  ›  技术社区  ›  ryanulit

在将错误记录到需要的数据库时,在global.asax中尝试/catch?

  •  1
  • ryanulit  · 技术社区  · 14 年前

    所以我在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\u错误方法中,在尝试写入数据库时是否需要try/catch块?我想我会的,以防连接出问题,等等。-但这真的有必要吗?另外,如果有错误,我在catch块中会做什么?在这一点上,我将捕捉到记录错误的错误,这个错误本身就是令人困惑的。

    1 回复  |  直到 14 年前
        1
  •  1
  •   CodingGorilla    14 年前

    在那里尝试/捕获可能是个好主意,我要做的是将详细信息写入一个文本文件或XML文件,以便您将来可以引用这两个错误并尝试修复它们。当然,这意味着您可能需要再次尝试/捕捉写入磁盘的过程,在这种情况下,我将放弃并结束它。=)

    在一个完全独立的笔记上,你真的应该看看Elmah: http://code.google.com/p/elmah/ . 这可能是你想要的一切,还有更多。