|
3 / 2 / 2
Регистрация: 21.03.2017
Сообщений: 297
|
||||||
Как обработать исключение в блоке catch16.08.2019, 03:22. Показов 4488. Ответов 18
Метки исключения (Все метки)
Есть такой несложный код:
0
|
||||||
| 16.08.2019, 03:22 | |
|
Ответы с готовыми решениями:
18
Как не делать остановку в блоке try/catch при дебаге? |
|
.NET
133 / 91 / 44
Регистрация: 17.08.2015
Сообщений: 296
|
||
| 16.08.2019, 09:19 | ||
|
Тоже интересно почему
0
|
||
|
3 / 2 / 2
Регистрация: 21.03.2017
Сообщений: 297
|
|
| 16.08.2019, 10:24 [ТС] | |
|
Два блока catch исключительно для проведения эксперимента: что будет если в блоке catch в свою очередь будет выброшено исключение.
Добавлено через 2 минуты Вот! И этого ожидал, но выводится только "MyException", а потом приложение падает.
0
|
|
|
44 / 43 / 7
Регистрация: 18.05.2010
Сообщений: 688
|
|
| 16.08.2019, 10:26 | |
|
Вы вызываете исключение в своём же первом кетче и никак его не отлавливаете, соответственно ни о какой Финале и речи быть не может
Добавлено через 1 минуту Если вы хотите отлавливать исключения внутри кетча, вам придётся писать вложенную конструкцию трай уже в него
0
|
|
|
911 / 796 / 329
Регистрация: 08.02.2014
Сообщений: 2,391
|
|
| 16.08.2019, 10:27 | |
|
Abejon, проверьте внимательнее вывод у Вас будет:
MyException Необработанное исключение с вытекающими последствиями Finally Заметьте вывода MyException1 не будет!!!
0
|
|
|
3 / 2 / 2
Регистрация: 21.03.2017
Сообщений: 297
|
||
| 16.08.2019, 10:48 [ТС] | ||
|
У меня не выводится "Finally" - программа вываливается. Что-то не так настроено?
Добавлено через 2 минуты
Получается, что нет возможности гарантированно обработать исключения?
0
|
||
|
3 / 2 / 2
Регистрация: 21.03.2017
Сообщений: 297
|
||
| 16.08.2019, 10:52 [ТС] | ||
0
|
||
|
44 / 43 / 7
Регистрация: 18.05.2010
Сообщений: 688
|
||
| 16.08.2019, 10:53 | ||
Сообщение было отмечено Abejon как решение
РешениеЕсли эта отмена потенциально может вызвать свои исключения, тогда внутри кетча просто пишется ещё один трай и там уже отлавливается это самое новое исключение. Ваша же конструкция отлавливает просто два вида исключений, но только тех, что произойдут внутри блока трай, то есть либо то либо другое. Одновременно два не смогут произойти, так как сразу после первого выполнение дальнейшего кода прерывается.
1
|
||
|
6496 / 3907 / 2006
Регистрация: 14.06.2018
Сообщений: 6,781
|
|||||||
| 16.08.2019, 11:05 | |||||||
В случае гарантированного завершения программы при необработанном исключении блок finally НЕ выполняется.Я со своим преподавателем специально тестировал данную ситуацию. А вот так при обработанном исключении оба finally выполняются:
0
|
|||||||
|
2810 / 1679 / 885
Регистрация: 14.04.2015
Сообщений: 5,723
|
||
| 16.08.2019, 11:18 | ||
|
Abejon,
0
|
||
|
1152 / 860 / 263
Регистрация: 30.04.2009
Сообщений: 3,603
|
|
| 16.08.2019, 11:26 | |
|
Не хочу комментировать все глупости здесь написанные.
Просто запустите приложение с перенаправлением вывода в файл ( TestApp.exe > output.txt) и гляньте результат.Вывод конечно же содержит Finally.
0
|
|
|
6496 / 3907 / 2006
Регистрация: 14.06.2018
Сообщений: 6,781
|
||
| 16.08.2019, 11:49 | ||
|
Abejon, nicolas2008, в официальной документации:
https://docs.microsoft.com/ru-... ry-finally
блок finally НЕ обязан выполняться.За поведение размотки стека в отладчике отвечает вот эта настройка:
0
|
||
|
6496 / 3907 / 2006
Регистрация: 14.06.2018
Сообщений: 6,781
|
||||||
| 16.08.2019, 12:07 | ||||||
|
Вот интересный способ "гарантировать" выполнение блока finally - поместить "рабочий код" в Task. Тогда в точку await гарантированно пробросится исключение, если мы правильно реализовали Task Asynchronous Pattern:
0
|
||||||
|
1152 / 860 / 263
Регистрация: 30.04.2009
Сообщений: 3,603
|
|
| 16.08.2019, 12:24 | |
|
0
|
|
|
6496 / 3907 / 2006
Регистрация: 14.06.2018
Сообщений: 6,781
|
||
| 16.08.2019, 12:26 | ||
|
0
|
||
|
1152 / 860 / 263
Регистрация: 30.04.2009
Сообщений: 3,603
|
||
| 16.08.2019, 12:45 | ||
|
Поверь, когда задают такие вопросы, мало кого интересует как это будет работать в отладчике. Главное как это будет работать на проде.
0
|
||
| 16.08.2019, 12:45 | |
|
Помогаю со студенческими работами здесь
19
Не подскажете как реализовать тут исключение try catch?
Ошибка в с try - catch блоке Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога
Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
|
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога
Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
|
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога
Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
|
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
|
|
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога
В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
|
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
|
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога
Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
|
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
|