Я хочу знать, что, наконец, блок все еще выполняется в обработке исключений, даже если для блока try нет соответствующего блока catch, а если нет, то что происходит? Также я хочу, чтобы системные исключения и разница приложенийОбработка исключений в C#
ответ
Да, вам не нужен блок catch
. Всегда выполняется блок finally
.
Что касается разницы между System.Exception
и System.ApplicationException
: Exception
является базовым классом для всех исключений; ApplicationException
следует использовать при возникновении ошибки, не связанной со смертельным исходом. См. MSDN documentation.
Также см. best practices for handling exceptions.
Как уже упоминалось, finally
будет работать, даже если нет блока catch
. Это поддерживает Java попробуйте, наконец, шаблон (который может быть достигнут с помощью IDisposable
и using
).
Один исключение (посмотреть, что я там делал?) это когда StackOverflowException
брошено в этом случае finally
блок will not run (ни Бы catch
, если один присутствовали).
Блок finally
выполняется после того, как блок try
завершает (либо чисто или путем исключения), как и следовало ожидать от его местоположения в коде.
+1 для упоминания, что StackOverflowException часть –
P.S. Мне нравится, как 2 израильтянина, отвечая на этот вопрос, оба изображены с ребенком в рюкзаке. (Вы не можете видеть, что так хорошо в моей картинке, но это то, что это ...);) –
что происходит, это исключение возникает в блоке catch ... все же наконец будет выполнено? – NoviceToDotNet
- 1. обработка исключений в C++
- 2. Обработка исключений в C
- 3. Обработка исключений в C#
- 4. Спецификация исключений в C++ - обработка недопустимых исключений
- 5. C++ нефатальная обработка исключений
- 6. MathUtilities C# Обработка исключений
- 7. C# Обработка исключений
- 8. Обработка исключений Objective-C
- 9. C++ Обработка исключений
- 10. C# Обработка исключений провалиться
- 11. C++ Обработка неперехваченных исключений
- 12. C++ - Обработка исключений
- 13. Обработка исключений C++
- 14. C++ Обработка исключений
- 15. C# - Обработка исключений в фреймах
- 16. Обработка исключений в Objective-C
- 17. Обработка исключений в Obj-C
- 18. C# Обработка исключений в классах
- 19. Обработка исключений процессора в C++
- 20. Общая обработка исключений в C#
- 21. Обработка исключений в классе C++
- 22. Обработка исключений проблемы в C++
- 23. Обработка глобальных исключений в C++
- 24. Обработка исключений
- 25. Обработка исключений
- 26. Обработка исключений?
- 27. Обработка исключений
- 28. C++ Обработка исключений на Tizen
- 29. C++ Обработка исключений заблокирована деструктором
- 30. Обработка исключений
Вы имеете в виду, что после запуска блока finally будет выбрано исключение и программа завершится? (когда нет соответствующего блока catch) – NoviceToDotNet
Ну, да и нет. Исключение будет выбрано, но может быть другой блок try-catch, окружающий вызов этого, и в этом случае попытка try-catch более высокого уровня поймает это исключение. –
Как в стороне, не используйте 'ApplicationException'. Он устарел. Вместо этого используйте соответствующее исключение, полученное из System.Exception (или выведите свой собственный). – mtreit