|
-2 / 8 / 2
Регистрация: 10.11.2008
Сообщений: 776
|
|
Когда нужно использовать исключения01.12.2015, 11:03. Показов 2076. Ответов 21
Метки нет (Все метки)
0
|
|
| 01.12.2015, 11:03 | |
|
Ответы с готовыми решениями:
21
Когда нужно использовать &ссылки ,а когда *указатели? Объяснить (с примерами) для чего нужен RTTI, как и когда его можно и нужно использовать
|
|
183 / 181 / 66
Регистрация: 15.02.2015
Сообщений: 515
|
|
| 01.12.2015, 11:24 | |
|
Ловить исключения или бросать?
Ловить стоит везде где они могут быть брошены. Какие исключения бросают те или иные функции должно быть задокументировано. Необработанное исключение - падение программы. Бросание исключений это как сообщить другому программисту, использующему ваш код (библиотеку, например), об ошибке, как поступать с этой ошибкой решать ему, ваша задача, как можно более подробно описать её (либо задокументировать, либо передать всю нужную информацию в сообщении этого исключения). Бросать исключения в коде уже самого приложения, нет смысла, вам же его и ловить придётся.
1
|
|
|
2549 / 1208 / 358
Регистрация: 30.11.2013
Сообщений: 3,826
|
|
| 01.12.2015, 11:29 | |
|
1
|
|
|
183 / 181 / 66
Регистрация: 15.02.2015
Сообщений: 515
|
|
| 01.12.2015, 11:57 | |
|
Я наверное не так выразился. Нет смысла кидать исключения в коде, который не будет использоваться в других приложениях. Например, обработка параметров функции main, даже если для этого написал небольшой класс, достаточно вывести сообщение пользователю. Т.е. я либо ловлю исключения и сообщаю при необходимости пользователю (текст в консоли или message box), либо при возникновении исключительной ситуации уже обрабатываю её (не бросая исключения), при необходимости сообщая что-нибудь пользователю.
0
|
|
|
|
||
| 01.12.2015, 12:06 | ||
Сообщение было отмечено SatanaXIII как решение
Решение
0
|
||
|
-2 / 8 / 2
Регистрация: 10.11.2008
Сообщений: 776
|
|
| 01.12.2015, 16:01 [ТС] | |
|
А просто передавать некое число на выходе функции, которое в себе несет код ошибки чем не удобно?
0
|
|
|
3258 / 2060 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
|
||
| 01.12.2015, 16:05 | ||
|
См похожее: errno, perror. С той разницей, что errno — глобальная переменная. Почему еще это неудобно — конструктор вообще ничего не возвращает.
0
|
||
|
5058 / 3118 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
|
|
| 01.12.2015, 16:06 | |
|
Knjagskij, ну, навскидку: 1) придётся на всех уровнях вложенности вызовов проверять коды ошибок и в случае неудачи пробрасывать код наверх, в место, где нужно обработать ошибку; 2) код ошибки не несёт дополнительной информации. Не открылся файл? Отлично. А какой файл? Конфиг? Или лог? Или какой-нибудь временный файл? Не будете же вы на эти три однородных ошибки 3 кода заводить.
0
|
|
|
3258 / 2060 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
|
|
| 01.12.2015, 16:08 | |
|
0
|
|
|
183 / 181 / 66
Регистрация: 15.02.2015
Сообщений: 515
|
||
| 01.12.2015, 16:08 | ||
|
0
|
||
|
5058 / 3118 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
|
||
| 01.12.2015, 16:13 | ||
|
0
|
||
|
-2 / 8 / 2
Регистрация: 10.11.2008
Сообщений: 776
|
||
| 01.12.2015, 17:17 [ТС] | ||
|
Мы можем структуру на выходе выдавать.
Не разобрался, чем пара (throw, catch) отличается от (return, swich(if))?
0
|
||
|
5058 / 3118 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
|
||
| 01.12.2015, 17:21 | ||
|
В первом случае, нам ничего вручную пробрасывать не придётся, исключение поймается там, где будет соответствующий обработчик, хоть в функции main. Во втором случае, объект исключения может нести дополнительную информацию, в приведённом случае, например, имя файла, который не удалось открыть, и причину, по которой это не удалось сделать (эту причину должна каким-либо образом вернуть функция открытия файла, это может быть код ошибки или, например, другой объект-исключение).
0
|
||
|
3258 / 2060 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
|
|||
| 01.12.2015, 17:22 | |||
|
2. Во время генерации исключения происходит раскрутка стека, что позволяет выбрать на каком уровне разумно обработать исключение, а не вручную пробрасывать код ошибки/структуру через все уровни. 3. Исключения помогают разделить код бизнес-логики и код обработки ошибок. В блоке try — логика, в блоках catch — обработка исключений. В случае кодов возврата нужно после каждого вызова писать код проверок.
1
|
|||
|
-2 / 8 / 2
Регистрация: 10.11.2008
Сообщений: 776
|
|
| 01.12.2015, 17:25 [ТС] | |
|
А если у нас два потока и один бросает исключение, то мы можем поймать его в другом?
0
|
|
|
5058 / 3118 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
|
||
| 01.12.2015, 17:26 | ||
|
0
|
||
|
-2 / 8 / 2
Регистрация: 10.11.2008
Сообщений: 776
|
|
| 01.12.2015, 17:26 [ТС] | |
|
Честно говоря, все-равно до конца не понял, можете привести какой-нибудь пример, где исключениями пользоваться проще, чем if-ми?
0
|
|
|
5058 / 3118 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
|
||
| 01.12.2015, 17:43 | ||
|
Добавлено через 4 минуты Сейчас накидаю вам пример. Добавлено через 8 минут Простенький пример. С исключениями: http://ideone.com/1awEGD Без исключений: http://ideone.com/ddJv4s Тут всего один уровень вложенности (функция handlefiles вызывает проблемную функцию openfile). А представьте, если проблемных функций много, все могут вернуть разные ошибки, и много уровней вложенности, а нам надо ошибку обработать далеко от места её возникновения? Куча if'ов, возвраты кодов ошибок, которые функция по логике возвращать не должна (где-то в недрах не открылся файл, о котором пользователь и знать не должен, а ему из интерфейсной функции летит такой код ошибки).
2
|
||
|
-2 / 8 / 2
Регистрация: 10.11.2008
Сообщений: 776
|
|||||||||||
| 02.12.2015, 16:10 [ТС] | |||||||||||
|
Отдельное спасибо, за
А мы обязательно должны передавать в исключении объект? И число 10 - это просто параметр для примера, или в нем есть какой-то смысл?
0
|
|||||||||||
| 02.12.2015, 16:10 | |
|
Помогаю со студенческими работами здесь
20
Когда надо использовать списки инициализации, а когда можно заменить их констуктором по умолчанию? Когда использовать WinAPI, а когда функции языка?
Когда использовать указатели ,а когда ссылки? Работает ли указатель на базовый класс исключения, когда попадает в блок catch Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2.
Данный документ берёт данные из другого нетипового документа. . .
|
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
|
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2.
Задача: реализовать программный контроль на предмет проведения документа. . .
|
Программный контроль заполнения реквизита табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2.
Задача: реализовать контроль заполнения реквизита "ПричинаСписания". . .
|
|
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение:
DISM / Online / Add-Capability / CapabilityName:WMIC~~~~
Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
|
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2.
Задача: при создании документов установить период списания автоматически. . .
|
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2.
Задача: вывести данные из ТЧ нетипового документа. . .
|
Программное заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению.
На форме документа создается. . .
|