Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.57/21: Рейтинг темы: голосов - 21, средняя оценка - 4.57
16 / 0 / 2
Регистрация: 10.11.2012
Сообщений: 117
1

Способы обработки ошибочных ситуаций

02.08.2015, 22:31. Показов 3853. Ответов 28
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый вечер!!

Расскажите ваше мнение на тему обработки ошибок, как лучше реализовать?

Заранее благодарю вас за ответы!!
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.08.2015, 22:31
Ответы с готовыми решениями:

Обработка ошибочных ситуаций с использованием исключений
Проблемка заключается в том что все работает правильно вот только не выдат сообщение об ошибке, не...

Обработки исключительных ситуаций
Объясните, что от меня хотят, а то уже мозг кипит ... 7. Не абстрактный класс В является...

Есть ли в SQL аналог обработки исключительных ситуаций?
Есть SQL аналог обработки исключительных ситуаций?

ряды и способы их обработки
Помогите составить блок схему к програмам program z1; var S,S1:string; i,n:integer; begin...

28
Эксперт С++
8739 / 4317 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
05.08.2016, 23:33 21
Author24 — интернет-сервис помощи студентам
Цитата Сообщение от ct0r Посмотреть сообщение
я вроде писал уже
я ожидаю от вас примера-иллюстрации.
который можно скомпилировать,
и посмотреть как это работает на практике.

а не объяснения на пальцах,
которое сможет понять только тот,
кто итак уже в теме.
0
Игогошка!
1801 / 708 / 44
Регистрация: 19.08.2012
Сообщений: 1,367
06.08.2016, 00:06 22
hoggy,
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <experimental/optional>
 
struct [[nodiscard]] ErrorInfo {};
 
[[nodiscard]] int foo1() { return 2; }
ErrorInfo foo2() { return ErrorInfo(); }
 
class Bar {};
 
std::experimental::optional<Bar> bar() { return Bar(); }
 
int main() {
    foo1();
    foo2();
    Bar b = bar();
}
http://melpon.org/wandbox/perm... hPTK6jcy6M

prog.cc: In function 'int main()':
prog.cc:13:9: warning: ignoring return value of 'int foo1()', declared with attribute nodiscard [-Wunused-result]
foo1();
~~~~^~
prog.cc:5:19: note: declared here
[[nodiscard]] int foo1() { return 2; }
^~~~
prog.cc:14:10: warning: ignoring returned value of type 'ErrorInfo', declared with attribute nodiscard [-Wunused-result]
foo2();
^
prog.cc:6:11: note: in call to 'ErrorInfo foo2()', declared here
ErrorInfo foo2() { return ErrorInfo(); }
^~~~
prog.cc:3:22: note: 'ErrorInfo' declared here
struct [[nodiscard]] ErrorInfo {};
^~~~~~~~~
prog.cc:15:16: error: conversion from 'std::experimental::fundamentals_v1::optional<Bar>' to non-scalar type 'Bar' requested
Bar b = bar();
~~~^~
1
1550 / 875 / 179
Регистрация: 05.12.2015
Сообщений: 2,555
07.08.2016, 12:57 23
Цитата Сообщение от hoggy Посмотреть сообщение
но есть ещё третий вариант:
"строгие гарантии",
с возможностью полного восстановления после паники
(гарантии ликвидации последствий аварии)
Вот, тут была тема Битовые утечки при записи данных на диск
Дайте строгие гарантии в этом случае
0
Ушел с форума
Эксперт С++
16473 / 7436 / 1187
Регистрация: 02.05.2013
Сообщений: 11,617
Записей в блоге: 1
07.08.2016, 13:50 24
Цитата Сообщение от hoggy Посмотреть сообщение
у нас самолет пассажирский.
отказал двигатель.
вообще то есть запасной.
и даже код написан, который умеет включать аварийный двигатель,
когда поймает исключение об аварийном отказе основного.
так мы будем восстанавливаться после паники,
или будем ронять самолет со всеми людьми на борту?
У нас в программе автопилота страшная ошибка, из-за чего существует
повышенная вероятность отказа двигателя. Предлагаешь так и летать с ней, а
сверху налепить механизмов аварийного восстановления? А я расскажу, что
будет дальше. Пилоты так и будут летать с двигателями "на грани", а сама
ошибка никуда не денется, она просто трансформируется в другую форму, в
результате чего вместо отказа двигателя самолет будет сразу взрываться.

Цитата Сообщение от hoggy Посмотреть сообщение
но есть ещё третий вариант:
"строгие гарантии",
с возможностью полного восстановления после паники
(гарантии ликвидации последствий аварии)
В программе возникло переполнение стека или разрушение кучи (heap corruption).
Программа находится в неопределенном состоянии. Никакое восстановление здесь
невозможно в принципе, кроме ну разве что перезапуска всего процесса.
0
1550 / 875 / 179
Регистрация: 05.12.2015
Сообщений: 2,555
07.08.2016, 14:22 25
Цитата Сообщение от hoggy Посмотреть сообщение
отказал двигатель.
вообще то есть запасной.
Самое близкое, что вспоминается - 747 там есть возможность прикрепить пятый двигатель (правда запустить его не получится - это чисто для транспортировки двигателей, но это мелочи). Есть еще всякие летающие лаборатории для тестирования двигателей в полете, но они тоже при отказе основных далеко не улетят.

Вообще реальность такова - двигателей на самолетах нужно больше одного (необходимо чтобы летать над населенными пунктами) именно на случай отказа. Т.е. они друг для друга запасные. Если же один двигатель отказал - летим к ближайшему аэродрому, а не в пункт назначения!, что и является завершением работы с сообщением об ошибке
1
Эксперт С++
8739 / 4317 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
07.08.2016, 17:40 26
Цитата Сообщение от Убежденный Посмотреть сообщение
У нас в программе автопилота страшная ошибка, из-за чего существует
повышенная вероятность отказа двигателя. Предлагаешь так и летать с ней, а
сверху налепить механизмов аварийного восстановления?
у нас есть только два варианта:
или запускать аварийный двигатель.
или ронять самолет.

по первому варианту даже при самом худшем развитии событий
у людей будет шанс выжить.

по второму, вероятность гибели всех пассажиров,
и экипажа практически 100%.

я спрашиваю вас ещё раз:
Цитата Сообщение от hoggy Посмотреть сообщение
так мы будем восстанавливаться после паники,
или будем ронять самолет со всеми людьми на борту?
Цитата Сообщение от Убежденный Посмотреть сообщение
Пилоты так и будут летать с двигателями "на грани"
реально так оно и происходит на самом деле.

в случае отказа одного из двигателя,
самолет даже сажать не будут.

он будет спокойно выполнять свой полет.
и уже только потом, когда он уже будет на земле,
там будет полная проверка всего оборудования.
а по факту отказа оборудования будет
очень серьёзное разбирательство.

Цитата Сообщение от Убежденный Посмотреть сообщение
В программе возникло переполнение стека или разрушение кучи (heap corruption).
Программа находится в неопределенном состоянии. Никакое восстановление здесь
невозможно в принципе, кроме ну разве что перезапуска всего процесса.
надо будем - перезапустим.

а вообще, отказоустойчивый софт изначально так проектируется,
что бы была возможность предоставить гарантии ликвидации последствий аварии.

память там, всякие ресурсы захватываются ещё при запуске процесса.
мы либо успешно застолбили все ресурсы и взлетаем.
либо самолет вообще не поднимется с земли.

а дальше софт работает как утюг.

все модули имеют возможность отключения/перезапуска/дублера.

если у нас только один процесс,
значит у нас предусмотрена возможность проведения смертельных тестов
(форкаем процесс и смотрим - сдох ли клон, или успешно отработал)

у нас двигатель отказал.
если бы это была какая то стабильная ошибка,
то её уже давно бы выловили ещё на тестировании.
а у нас самолет в воздухе.

теоретически проскочить тут может только плавающая ошибка.
которая очень редко себя проявляет.

а это значит, что рестарт сбойнувшего модуля
с очень высокой степенью вероятности сможет помочь.

у вас есть практически 100% вероятность,
что самолет успешно сможет продолжить полет на аварийном двигателе.

и у вас есть практически 100% вероятность,
что все люди погибнут, если не попытаться восстановиться после паники.

что вы выбираете?

Добавлено через 12 минут
Цитата Сообщение от avgoor Посмотреть сообщение
Если же один двигатель отказал - летим к ближайшему аэродрому, а не в пункт назначения!, что и является завершением работы с сообщением об ошибке
во-первых, только так на аварийных летают.

а во-вторых, вы не поняли.
суть моего послания:
есть ПО, которое обязано работать вопреки любым возможным сбоям.

и оно специально так проектируется,
что бы система смогла выжить несмотря на наличие ошибок.
1
1550 / 875 / 179
Регистрация: 05.12.2015
Сообщений: 2,555
07.08.2016, 17:45 27
Цитата Сообщение от hoggy Посмотреть сообщение
во-первых, только так на аварийных летают.
а во-вторых, вы не поняли.
суть моего послания:
есть ПО, которое обязано работать вопреки любым возможным сбоям.
Ваши слова бы, да богу в уши.
Раз уш пошла речь об авиации, есть такой самолет - A320. Там нареканий к софту - воз и маленькая тележка. Даже наш SSJ100 позиционировался, как арбуз без глюков.
0
Ушел с форума
Эксперт С++
16473 / 7436 / 1187
Регистрация: 02.05.2013
Сообщений: 11,617
Записей в блоге: 1
07.08.2016, 18:54 28
Цитата Сообщение от hoggy Посмотреть сообщение
надо будем - перезапустим.
Самолет, у которого отказал двигатель, тоже перезапустим?
0
Эксперт С++
8739 / 4317 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
07.08.2016, 19:13 29
Цитата Сообщение от Убежденный Посмотреть сообщение
Самолет, у которого отказал двигатель, тоже перезапустим?
самолет можно только посадить.
а вот систему его жизнеобеспечения перезапустить можно.
0
07.08.2016, 19:13
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.08.2016, 19:13
Помогаю со студенческими работами здесь

Способы обработки сообщений windows
Подскажите пожалуйста как называются способы (механизмы) обработки сообщений кроме ловушек

Какие способы самые удобные/рациональные способы регистрации ошибок есть?
Задался вопросом, а как регистрировать ошибки? При этом чтобы и выглядело это красиво, и понятно...

Контроль ввода ошибочных значений
Как заставить пользователя вводить данные по определенному шаблону, к примеру дату в формате...

Выборка ошибочных данных, возможна?
Приветствую. :) Имеется таблица: ----------------------------------------------- ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
29
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru