显示\捕获InnerException消息

时间:2010-06-12 23:16:29

标签: vb.net

我使用以下内容提供了有关我的代码中可能出现的常见异常的更多信息,唯一的问题是如果生成的异常没有InnerException消息则会出现此错误。

Catch ex As Exception
     'MessageBox.Show(ex.Message) 'If there is no InnerException.
     MessageBox.Show(ex.InnerException.InnerException.Message)
End Try

有更好的方法吗?

2 个答案:

答案 0 :(得分:3)

你可以创建一个递归函数,只要它们存在就能抓住内部异常,这样你就可以得到完整的细节,如果你有一个例外,或者3个异常相互分层。

Public Function ReadException(ByVal ex As Exception) As String
  Dim msg As String = ex.Message
  If ex.InnerException IsNot Nothing Then
    msg = msg & vbCrLf & "---------" & vbCrLf & ReadException(ex.InnerException)
  End If
  Return msg
End Function

并在你的捕获中:

Catch ex As Exception
     MessageBox.Show(ReadException(ex))
End Try

答案 1 :(得分:2)

只是把它包围起来如果不是什么,但如果你做了很多,写一个快速的帮助函数,如:

Private Function GetErrorText(ByVal ex As Exception) As String
    Dim err As String = ex.Message
    If ex.InnerException IsNot Nothing Then
        err &= " - More details: " & ex.InnerException.Message
    End If
    Return err
End Function

然后你可以MessageBox.Show(GetErrorText(ex))