Я хочу запустить блок кода после операторов catch независимо от того, какое исключение происходит, но только тогда, когда происходит какое-то исключение. Таким образом, в основном это оператор finally, который требует исключения для выполнения. Есть ли простой способ сделать это в визуальных базовых?Visual Basic «Наконец, за исключением»
ответ
Блок finally оператора If всегда будет вызываться независимо от того, есть ли возникшее исключение или нет. MSDN
Единственный способ сделать это - использовать другой метод, который принимает исключение в качестве параметра и вызывать этот метод из исключения catch.
Lame ... Я хотел этого, чтобы было меньше кода, но решение, которое вы дали, сделало бы больше кода. О хорошо ... – SteveDeFacto
Lame или не его спецификация Try ... Catch ... Наконец, блок –
Вы можете добавить различные блоки исключений, например:
Try
' do operation
' Most specific:
Catch e As ApplicationException
' do something only if ApplicationException has occurred
' Least specific:
Catch e As Exception
Console.WriteLine("{0} Second exception caught.", e);
End Try
Если ApplicationException происходит, Exception не будет выполняться. – SteveDeFacto
Да, это правильно, но разве это не то, что вам нужно? Вы хотите выполнить другой фрагмент кода в случае возникновения определенного исключения. Если есть код, который нужно выполнить для каждого исключения, вы можете извлечь его в метод и повторно использовать метод. Ключевое слово finally на самом деле не то, что вам нужно. Это именно то, что окончательно не предназначено для. Наконец, нужно всегда выполнять исключение или исключение. – Kenneth
Как насчет
Dim isException As Boolean = False
Try
....
Catch ex As ApplicationException
isException = True
....
Catch ex As Exception
isException = True
....
Finally
If (isException)
....
End If
End Try
Не стоит. Только немного меньше кода, но также немного сложнее читать. – SteveDeFacto
Мне нравится эта версия лучше - когда вы смотрите на код через 2 года, будет очевидно, что это делает, но с другой версией вы будете царапать голову о вложенном try/catch. –
мне не нравится это, но как насчет вложенного Try
:
Try
Try
....
Catch ex As ApplicationException
Throw
Catch ex As Exception
Throw
End Try
Catch
' This is your "finally"
End Try
Не то, на что я надеялся, но это будет сделано. – SteveDeFacto
На самом деле, бросать другое исключение вовсе не привлекательно. Тем не менее, упорные усилия. – SteveDeFacto
Вы на самом деле не бросаете другое исключение, просто перебрасываете исключение, которое у вас уже есть, поэтому вы держите свою трассировку стека и все такое. Но я согласен, но не самый элегантный вид кода. –
- 1. Найти попытку за исключением или, наконец,
- 2. Увеличение охвата с примерки, за исключением, наконец, и контекстно-менеджер
- 3. Delphi - Что такое «правильный» заказ за исключением и, наконец, блоков?
- 4. Использование вложенной «попробовать /, наконец,» «попробовать/за исключением» заявления
- 5. Тест Visual Basic Скрипты за таблицей Excel
- 6. Обработчик событий Visual Basic
- 7. Visual Basic 6 и Visual Basic в Visual studio
- 8. Try Catch Наконец, вложенное поведение с исключением
- 9. Попробуйте - За исключением нескольких ошибок, за исключением
- 10. Visual basic - Приращивание очков
- 11. Visual Basic 6: Приложения
- 12. Visual basic radio buttons
- 13. Visual Basic 2010 BadImageException
- 14. Visual Basic: Сохранение, Именование, Загрузка
- 15. Visual basic LINQ error
- 16. Visual Basic .Net GUI
- 17. Visual basic substitution cipher
- 18. Окрашивание Visual Basic radio
- 19. Visual Basic - Входная проверка
- 20. Visual Basic LINQ
- 21. Visual Basic - IndexOutOfRangeException Error
- 22. Visual Basic Beginner ..SubStrings
- 23. XPath в Visual Basic
- 24. Visual basic «Необработанное исключение»
- 25. Visual Basic Loop
- 26. Процедуры Visual Basic Calling
- 27. Visual Basic Hospital Stay Calculator
- 28. Visual Basic DataGridView NullReferenceException
- 29. Попробуйте и за исключением всех ошибок, за исключением sys.exit()
- 30. Python Try/За исключением нескольких, за исключением блоков
Ну, что это? Независимо от каких-либо исключений, только на каком-то исключении? У вас не может быть этого. –
Ваше первое предложение требует одновременного существования двух взаимоисключающих условий. Если вы дадите некоторый псевдокод, вы можете избежать голосования. Иногда вам просто нужно написать весь код, хотя он кажется обременительным. –
Код будет тем, что опубликовал Джо Енос, но без логического. Тем не менее, я не думаю, что он существует в визуальной форме. – SteveDeFacto