2015-02-12 3 views
0

Мой вопрос касается использования «Бросок нового исключения» в Catch Block.Исключение броска в Catch для визуального базового

Я видел MessageBox («сообщение»), используемый в некоторых блоках Catch, и альтернативно выбрал новое исключение («сообщение»).

Есть ли разница? Почему я должен использовать Throw New Exception и вместо этого использовать поле сообщения.

ответ

0

MessageBox показывает окно сообщения. Если кто-то пишет код таким образом, это означает, что исключение было поймано, и пользователи должны быть проинформированы.

Throwing in catch блок обычно используется для переименования исключений. Например, вы читаете файл. Чтение файла может вызвать ряд исключений из «файла уже открыт» на «устройство не готово». Но ваш код хочет сообщить внешнему коду, что либо он «не мог открыть файл», либо «файл имеет неправильный формат». Внешний код не слишком заботится о причине невозможности открытия файла.

Таким образом, исключения при открытии файла пойманы, а затем исключение «невозможно открыть файл» выбрасывается вверх, так что внешнему коде не нужно обрабатывать все эти исключения.

Sub OuterCode() 
    Try 
     Dim s As String 
     s = ReadFile() 
     ParseFile(s) 
    Catch e As CouldntReadFileException 
     ' ... 
    Catch e As ParsingException 
     ' ... 
    End Try 
End Sub 

Function ReadFile() As String 
    Try 
     ' Open file 
    Catch e 
     Throw New CouldntReadFileException() 
    End Try 
End Function 

Sub ParseFile(s As String) 
    ... 
End Sub