2010-09-28 4 views
0

Мне нужно, чтобы показать сообщение Inner-если есть один, и если нет, то мне нужно, чтобы показать сообщение первичного исключенияЗаявление, если 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 

Но я получаю ошибки

Любые идеи?

Благодаря

Джейми

ответ

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 

Edit-

Сделать это выглядит следующим образом:

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

Где я могу это поставить? Спасибо –

+0

@ Джейми Тейлор - разница в примере @Davids и том, что у вас есть в вашем вопросе. Вы уверены, что хотите * самое внутреннее исключение? –

+0

@Peter Lillevold - я хочу получить самое внутреннее исключение, если оно есть, а если нет, то я просто хочу получить основное исключение –

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

Я получаю Список типов ошибок не определен. Есть идеи? –

+0

Мой VB немного ржавый, изменил код, чтобы хотя бы скомпилировать. – SWeko

Смежные вопросы