|
0 / 0 / 0
Регистрация: 22.11.2020
Сообщений: 42
|
|||||||||||||||||||||
Объект ошибки для выброса исключения04.05.2021, 13:55. Показов 1027. Ответов 12
Ситуация:
Хочу создать класс для выброса исключений, да такой, чтобы он в конструктор принимал русскоязычное сообщение исключения. Реализация #1:
Я всё-таки бы хотел уточнить по какому пути не был открыт файл. Как на зло нельзя передать в wifstream inF{path}; path типа wstring, только char * или string... ужас( Я не могу конкатенировать wstring с string. Но хотелось бы такой результат:
Я задаю этот вопрос тут, потому что считаю, что моё решение сделать класс Error крайне ужасным, плюс к тому мне кажется что это велосипед и в STL должен быть класс, который как раз предназначен выброса исключений с многобайтовыми сообщениями (wchar_t, wstring), но я не знаю их и к сожалению не нашёл. Реализация #2:
0
|
|||||||||||||||||||||
| 04.05.2021, 13:55 | |
|
Ответы с готовыми решениями:
12
|
|
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
|
|
| 04.05.2021, 15:40 | |
|
0
|
|
|
1673 / 501 / 107
Регистрация: 17.05.2015
Сообщений: 1,519
|
|||||||||||||||||||||
| 04.05.2021, 16:28 | |||||||||||||||||||||
messages может вылететь исключение.Если из функции-noexcept вылетит эксепшен, тогда сработает terminated Правильно писать:
Не по ссылке. wcerr может бросить исключение.Компиляторы могут поддерживать, но не обязаны этого делать. --- А вообще, если делать правильно, то ваш класс exception должен быть наследником std::exception. И при этом он должен быть "реерентабельным". "реерентабельным" - значит он должен удовлетворять требованиям к обработчикам сигналов. Например: не использовать кучу (никаких динамических аллокаций). Он не должен допускать даже теоретических возможностей для ситуаций, при которых эксепшен может вылетить при создании, или работе самого эксепшена. Например:
Вместо std::runtime_error, вы можете использовать свой собственный класс эксепшенов:
Такая мера позволяет сделать надежный класс, который не использует кучу. И который может прозрачно для вызывающего кода выполнять преобразования между строками, основанными на char/wchar_t
0
|
|||||||||||||||||||||
|
1673 / 501 / 107
Регистрация: 17.05.2015
Сообщений: 1,519
|
||
| 04.05.2021, 18:16 | ||
|
0
|
||
|
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
|
||
| 04.05.2021, 18:36 | ||
|
0
|
||
|
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
|
|
| 04.05.2021, 21:36 | |
|
Наверное, что не появится никаких других между throw и catch.
А для чего вообще делать noexcept для класса исключения? Вроде бы нет такого требования, если не делать наследование от std::exception.
0
|
|
|
1673 / 501 / 107
Регистрация: 17.05.2015
Сообщений: 1,519
|
|||||||
| 04.05.2021, 23:06 | |||||||
|
Иначе невозможно будет гарантировать надёжность ловушки исключений:
what вылетит эксепшен?Ловушка потерпит фиаско: приложение погибнет от std::terminate.
0
|
|||||||
|
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
|
||
| 04.05.2021, 23:18 | ||
|
Я о том, что нет требования делать строго noexcept. Ну если там всё так плохо, что даже строка не создаётся, то толку от ловушки будет мало.
0
|
||
|
0 / 0 / 0
Регистрация: 22.11.2020
Сообщений: 42
|
||||||
| 06.05.2021, 10:05 [ТС] | ||||||
|
eva2326
![]() 2 вопроса (ответь пож): 1) То есть если я правильно понял, то чтобы исключить возможность выброса исключения связанного с bad_alloc нам нельзя взаимодействовать с кучей и поэтому мы отказываемся от передаче по ссылке (правильно ?). 2) А что если я напишу так:
0
|
||||||
|
0 / 0 / 0
Регистрация: 22.11.2020
Сообщений: 42
|
||||||
| 13.06.2021, 03:39 [ТС] | ||||||
|
Короче это лучшее на что я пока способен:
0
|
||||||
| 13.06.2021, 03:39 | |
|
Помогаю со студенческими работами здесь
13
Исключения ошибки Уничтожить объект при возникновении в конструкторе обрабатываемого исключения
Как словить все исключения и ошибки? Найти и исправить ошибки в коде (исключения) Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2.
Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива.
Было так:. . .
|
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2.
Задача: реализовать контроль корректности заполнения дат назначения. . .
|
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html
Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
|
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2.
Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
|
|
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях.
Задача: при копировании документа очищать определенные реквизиты и табличную. . .
|
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git
main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели
8ATzM_2aurI
|
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2.
Задача: запретить редактирование документа, если он открыт у другого пользователя.
/ / . . .
|
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои.
А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
|