【问题标题】:Why can't I log an error?为什么我不能记录错误?
【发布时间】:2011-06-27 17:58:53
【问题描述】:

我有一个 ASP.NET 2010 应用程序。基本上,在任何我有理由怀疑错误的地方,我都会使用以下技术来尝试记录它。

Try

'Code causing error here

Catch ex As Exception When LogException(ex)
Catch ex As Exception 'Here is where I would put a more specific error

End Try

LogException 函数总是返回 false。因此,每个异常都应该被捕获和记录,然后控制回落到块中的下一个异常。真正发生的是调用 LogException 函数,但在它可以做任何事情之前,控制权会直接返回到上面块中的下一个异常。为什么?

编辑...这是被调用但在第一行之后返回的函数...

Public Function LogException(ByVal ex As Exception) As Boolean
        Dim oExceptionMgt As New ExceptionMgt 'This line runs
        oExceptionMgt.LogException(ex) 'This line should go to db to log error. 
Return False
    End Function

【问题讨论】:

  • 如果它总是假的,它不会跳过那个条件吗?
  • 免责声明:我不是 VB 程序员。 LogException 函数包含什么代码?该函数本身是否有可能引发异常?
  • LogException 函数最后返回 false。即据说在它将错误记录到数据库之后。但是,它不是去数据库,而是跳过代码并返回。
  • 贴出代码,我们不是读心者。
  • 再一次,您还没有向我们展示实际与数据库交互的代码。

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


【解决方案1】:

虽然我不是 VB 程序员,但如果我看到以下情况:

do something when somecondition

从逻辑上讲,只有当somecondition 为真时才执行something。因此,在您的示例中,代码正确执行,因为您的 LogException(Exception ex) 方法始终为 false。这反过来意味着在这种情况下不要执行something 并继续执行。

【讨论】:

  • 请理解该方法确实是错误的,就像你说的那样,但是在它应该去数据库并记录错误之后。关于这个我现在要添加的功能,请参见上文。
  • 请显示实际与数据库交互的代码,您还没有这样做。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-09
  • 2014-10-08
  • 1970-01-01
相关资源
最近更新 更多