|
2 / 2 / 0
Регистрация: 17.12.2017
Сообщений: 116
|
||||||
Обработка исключительных ситуаций19.05.2019, 17:55. Показов 2433. Ответов 27
Метки нет (Все метки)
Здравствуйте!
В данном коде надо выполнить обработку исключительных ситуаций с использованием класса Exception.
0
|
||||||
| 19.05.2019, 17:55 | |
|
Ответы с готовыми решениями:
27
Обработка исключительных ситуаций Обработка исключительных ситуаций Обработка исключительных ситуаций |
|
1685 / 513 / 107
Регистрация: 17.05.2015
Сообщений: 1,524
|
|||||||
| 21.05.2019, 13:33 | |||||||
|
Во-первых, причем тут си-шарп? Во-вторых, вы это серьёзно? Про "ловушку параноика"? Вот например, один бездарный дилетант написал такой код:
Как вам поможет такая ловушка? Вы даже понять что случилось никак не сможете. Никакой диагностики. И в третьих, если все ж таки включить голову и подумать, для чего по вашему в язык завезли возможность отлавливать эксепшены по базовому классу? Наверное, что бы этим не пользоваться, да? И диагностику неполадки не журналировать? Никогда не могла понять: откуда только берется такой бред в головах? - Давай отлавливать все исключения через std::exception? - Давай, только все не получится. Всё равно придется ставить ловушку параноика. И туда кроме seh будут штатные эксепшены залетать. - ???? - Так ведь у нас в IT нынче идиотов много. Они кидают всякий хлам, который не отнаследован от std::exception. И потом поди, разбери всю эту сволочь.
0
|
|||||||
|
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
|
|||||||
| 21.05.2019, 13:46 | |||||||
|
Добавлено через 3 минуты вообще здесь должно быть
0
|
|||||||
|
1685 / 513 / 107
Регистрация: 17.05.2015
Сообщений: 1,524
|
|||
| 21.05.2019, 13:48 | |||
|
который ни разу не применял свою теорию на практике. Вот почему у всех адекватных людей получается запустить план Б, а вы не можете? В какой ситуации запускают план Б? План Б запускают в ситуации, когда провалился план А. Заметьте: не важно, почему именно провалился план А. Важно: он уже провалился, и теперь нужно что-то делать. И именно для этого случая существует план Б. Самолет летит в воздухе. У него отказал двигатель. Короткое замыкание, или птичка в турбину попала, или... ? Здесь и сейчас не важно, почему отказал двигатель. Важно: что теперь будем делать? Как нам выжить? Во-первых, нужно отключить сломанный двигатель. Что бы не дай бог ещё хуже не стало. А во-вторых, нужно запустить аварийный двигатель. Обратите внимание: Вы будете выполнять одну и ту же инструкцию: Отключать сбойный модуль, и запускать аварийный. И это - независимо от причины аварии. С причинами будут разбираться позже, когда самолет посадят на землю. Сейчас нужно отключить сбойный модуль, и запустить аварийный. Поэтому, "разные ошибки" - не принципиальный фактор. За редким исключением, одна и та же ловушка на все случаи жизни Это так сложно для вашего понимания? Добавлено через 1 минуту что не нужно ожидать наследников std::exception? Вы сами понимаете, какую ахинею несёте?
0
|
|||
|
Комп_Оратор)
|
||
| 21.05.2019, 14:04 | ||
|
Кроме разыменования нуль-пойнтера под ms компилятором (см. пост oleg-m1973) достаточно много есть примеров того, что идиотов в IT может оказаться на 1 больше чем некто предполагает. Что-до адресной обработки разных ошибок, то она придумана не идиотами. Хотя то, о чём вы говорите стало практикой ввиду технологичности и относительной простоте, ни кто не отменял и иное. Пусть Ваша категоричность продолжает этот беспредметный спор. Жаль, повторю - тот пост теперь доступен лишь упорным исследователям. Там кстати полно логических ошибок. Поторопился я. Но исправить не составит труда. Пример кода бывает разный. Я не люблю давать решение. Мне нравится показать как его можно найти. Иначе смысла не вижу. Именно по этому не стану продолжать данный разговор.
0
|
||
|
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
|
|||||||
| 21.05.2019, 14:43 | |||||||
|
Я вроде бы сказал, что всегда должен присутствовать catch(...).
0
|
|||||||
|
1685 / 513 / 107
Регистрация: 17.05.2015
Сообщений: 1,524
|
|||||||||||||
| 21.05.2019, 14:53 | |||||||||||||
|
seh под виндовс не имеет никакого отношения ни к юзерским эксепшенам, ни к эксепшенам с++ вообще. 2. seh (например, access violation) вы сможете отловить только в трех точках (...) На самом деле не только в трех точках
.
Я знаю как минимум два способа. Один из которых: проксировать seh-exceptions через эксепшены с++. (seh отлавливается спец. ловушкой, и перебрасывается дальше уже как обычный c++ эксепшен) Это, безусловно, полезная возможность для разработки под windows. Однако, это - отдельная тема, которая тянет на хорошую статью, где нибудь на Хабре. Захотите поговорить о seh - создайте отдельную тему)) "Три точки" - это именно та ловушка, оказавшись в которой, даже предположить нельзя, что именно могло случится, и почему процесс угодил в эту ловушку. В связи с этим ваша фраза: Ну конечно она придумана не идиотами, и не просто так. Она придумана для редких случаев, когда причина неполадки действительно имеет значение для решения проблемы. Например, на стороне клиентского кода используется класс коннекторов к базе данных. Коннектор подсоединяется к БД, и выполняет какой то пользовательский запрос в БД. И тут есть две принципиально разные категории возможных сбоев: Например отсутствие связи по интернет, или слишком много юзеров уже подсоединились к базе. Во всех этих случаях мы можем попытаться подключиться чуть позже. Другая категория: когда подключение успешное, но сам по себе SQL запрос некорректный. Вот здесь бесполезно пытаться подключиться позже. Здесь любые попытки будут бесполезны. Нужно звать программиста, и пусть исправляет баг. Соответственно:
Плохо, когда человек не умеет признавать свои ошибки. А вы - молодец. Добавлено через 4 минуты которые учились на си-шарп, ожидают, что все нормальные эксепшены будут наследниками std::exception? Типа, наследоваться от std::exception не нужно, все равно ловить в трех точках будут? Я правильно поняла этот бред?
0
|
|||||||||||||
|
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
|
|||
| 21.05.2019, 15:26 | |||
|
Второе - сам по себе std::exception малоинформативен, к тому же его нельзя ни к чему преобразовать (в отличие от шарпов). Поэтому будут делаться несколько catch, например для std::system_error, т.е. "будут ловить в нескольких точках" Насчёт только программистов на си-шарп я конечно загнул, всякие скриптовики тоже думают, что достаточно отловить std::exception и всё будет в шоколаде. Добавлено через 7 минут
0
|
|||
|
1685 / 513 / 107
Регистрация: 17.05.2015
Сообщений: 1,524
|
|||||||||||
| 21.05.2019, 15:43 | |||||||||||
|
Вот почему вы считаете грамотный подход к работе бредом? Все грамотно выполненные классы эксепшенов в обязательном порядке отнаследованны от std::exception Если ваш бестолковый эксепшен не отнаследован от std::exception, то в 99% всех кейсов ваш эксепшен отловят только в этих чертовых трех точках, где уже никто не будет знать что случилось. e.what() ? Не, не слышал.Вот именно, что знание о фактическом типе наследника как раз таки мало-информативно. Допустим отловили вы ErrorOpenFile, ну и что вам даст знание о типе? Что файл не открылся? Вы итак это знаете, раз попали в ловушку после openFile(path);О какой такой информативности вы сейчас вещаете? Хотите знать детали, почему конкретно файл не смог открыться? Может его на диске нет? Может он другим процессом занят? Не хватает прав? Вы эти детали хотите знать? Так вот специально для этого и существует волшебный e.what()
Приведите кодом пример нескольких catch для std::system_error, которые вы "будете ловить в нескольких точках" Вы лучше попробуйте привести пример, когда "всё не в шоколаде".
1
|
|||||||||||
| 21.05.2019, 15:43 | |
|
Обработка исключительных ситуаций Обработка исключительных ситуаций Обработка исключительных ситуаций! Обработка исключительных ситуаций.
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
| Опции темы | |
|
|
Новые блоги и статьи
|
|||
|
Саморегулирующийся социальный контракт для сервера cross-section.
Hrethgir 14.08.2026
С кодом конечно таких глубоких размышлений пока не было, впрочем я уже привык к алгоритмизации. Суть предмета записи: снова в диалоге с нейросетью (я взял пока себе ник для учётки админа - Rector). . . .
|
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет:
1. Использовать системное время и дату,
2. Есть возможность вводить время и дату вручную.
3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
|
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber.
Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
|
Установка MinGW GCC 16.2 и CMake
8Observer8 10.08.2026
VK Видео:
https:/ / vkvideo. ru/ video-240781534_456239017
YouTube:
eY5-5PyI9NM
Текстовая версия
|
|
Неделя из жизни имитационной модели склада: мои кривые руки растут, откуда надо
anaschu 10.08.2026
Неделя из жизни имитационной модели склада: как я почти написал неправильную логику и что с этим делать
Работаю сейчас над учебно-рабочим проектом: строю в AnyLogic имитационную модель процессов. . .
|
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства.
Родственных связей существует 8 ступеней, такие как:
p - отец
P - мать
q - муж
Q - жена
b - брат
B - сестра
s - сын
S - дочь
|
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире.
Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
|
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С.
Задача:
Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
|