2010-09-28 93 views
0

我需要显示的InnerException消息,如果有一个,如果没有的话,我需要显示主要的例外声明,如果的InnerException为null,则不会显示

这里的消息就是我有

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 

,但我发现错误

任何想法?

感谢

杰米

回答

1

你或许应该声明的变量外的范围,并检查了没有而不是空的消息字符串。

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 
1

如果没有内部异常,然后评估err.InnerException.Message会抛出异常。您需要

If Not err.InnerException Is Nothing 
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 
+0

我需要把这个放在哪里?谢谢 – 2010-09-28 12:16:23

+0

@Jamie Taylor - @Davids示例与您的问题有什么区别。你确定你想要*最内层的*异常吗? – 2010-09-28 12:25:41

+0

@Peter Lillevold - 我想得到最内层的异常,如果有一个,如果没有一个然后我只想获得主要异常 – 2010-09-28 13:31:50

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 
+0

我得到一个错误类型列表没有定义。有任何想法吗? – 2010-09-28 12:18:10

+0

我的VB有点生疏,修改代码至少编译。 – SWeko 2010-09-28 12:30:32

相关问题