声明如果InnerException为null然后不显示

时间:2010-09-28 12:06:45

标签: asp.net error-handling

我需要显示InnerException消息,如果有,那么我需要显示主要异常的消息

这就是我所拥有的

Dim err As System.Exception = Server.GetLastError

If err.InnerException.Message = "" Then

Dim ErrorDetails As String = err.Message

Else

Dim ErrorDetails As String = err.InnerException.Message

End If

但我收到错误

有什么想法吗?

由于

杰米

4 个答案:

答案 0 :(得分:2)

这将为您提供最里面的例外消息

while err is not nothing
    ErrorDetails = err.message
    err = err.innerexception
end while

编辑 -

让它看起来像这样:

Dim err As System.Exception = Server.GetLastError
Dim ErrorDetails As String

    while err is not nothing
        ErrorDetails = err.message
        err = err.innerexception
    end while

答案 1 :(得分:1)

如果没有内部异常,那么评估err.InnerException.Message将抛出异常。你需要

If Not err.InnerException Is Nothing

答案 2 :(得分:1)

您应该在外部作用域中声明您的变量,并检查Nothing而不是空消息字符串。

Dim ErrorDetails As String
Dim err As System.Exception = Server.GetLastError

If err.InnerException Is Nothing Then

  ErrorDetails = err.Message

Else

  ErrorDetails = err.InnerException.Message

End If

答案 3 :(得分:0)

您可能还希望获得第一个和最后一个异常之间的所有消息。如果你有一个深层堆栈,通常第一个例外太笼统,而且最后一个例子太具体了,就像这些一样:

Dim ErrorDetails As List(Of String) = New List(Of String)
Dim err As Exception = Server.GetLastError

While Not err Is Nothing
  ErrorDetails.Add(err.Message)
  err = err.InnerException
End While