代码之家  ›  专栏  ›  技术社区  ›  Jamie Taylor

如果InnerException为null,则不显示

  •  0
  • Jamie Taylor  · 技术社区  · 14 年前

    这是我得到的

    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 回复  |  直到 14 年前
        1
  •  1
  •   Peter Lillevold Rene    14 年前

    您可能应该在外部范围中声明您的变量,还应该检查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
    
        2
  •  2
  •   BlackICE    14 年前

    这将获得最内部的异常消息

    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
    
        3
  •  1
  •   Jon Skeet    14 年前

    err.InnerException.Message 将引发异常。你需要

    If Not err.InnerException Is Nothing
    
        4
  •  0
  •   SWeko    14 年前

    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