Форум программистов, компьютерный форум CyberForum.ru

try vs return в обработке ошибок - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Скомпилировать проект на Theards http://www.cyberforum.ru/cpp-beginners/thread699009.html
Ребят, очень нужна помощь в компиляции проекта на theards на С++. Хочу разобраться в работе с нитями. Нашла удачный пример работы с потоками, пытаюсь его запустить, но при компиляции ошибки. Ранее не работала с мьютексами.. вот ссылочка на визуализацию проекта и исходник.. gendocs.ru/v27555/ Прикрепила те файлы, что я пыталась скомпилировать. Но там у меня ошибки :cry: Видимые ошибки я...
C++ Передача консольных команд в CMD через system(""); Всем привет! Подскажите как выполнять консольные команды через system с правами администратора? На пример: int main(void) { system("sc create MyService binpath= d:\\myservice.exe typy= own type= interact"); } http://www.cyberforum.ru/cpp-beginners/thread698999.html
C++ Перевод с Fortran на С++
Доброго времени суток. Проблема в следующем, никак не могу разобраться с синтаксисом Fortran. В свое время изучал С++, и то правда давно дело было. Есть код программы на Fortran, не могли бы Вы переписать ее на С++. Заранее спасибо. implicit real*8(a-h,o-z) dimension rk(200),pk(200),rkt(200),td(100),ed(100),tt(200) 1,y(200),z(200),en(100),pr1(200),pr2(200) data...
Дописать "рубль" в правильной форме C++
Написать программу которая после введенного с клавиатуры числа ( в диапазоне от 1 до 999), обозначающего денежную единицу,дописывает "рубль" в правильной форме. Например,12 рублей,21 рубль. Запрещено размещать тему в нескольких разделах одновременно (кросспостинг), а также дублировать тему в одном разделе. Правила форума
C++ Составить блок-схему по коду http://www.cyberforum.ru/cpp-beginners/thread698972.html
напишите пожалуйста блок схему для этого кода #include "stdafx.h" #include "iostream" #include "conio.h" #include "string" using namespace std; struct RockGroup{ string name; int age;
C++ Разсчитать значение функций Доброго времени суток. Прошу вашей помощи. Необходимо написать программу, которая разсчитывает значение ф-ции y=cos5x, период для Х , шаг 0.01 и разсчитывает среднее значение всех значений ф-ции при определенном Х. Буду очень вам признателен. ЗЫ: через цикл подробнее

Показать сообщение отдельно
Evg
Эксперт CАвтор FAQ
17545 / 5783 / 370
Регистрация: 30.03.2009
Сообщений: 15,930
Записей в блоге: 26
16.11.2012, 09:52     try vs return в обработке ошибок
Моё мнение, что исключения следует использовать только в тех случаях, когда делается многоуровневый выход (т.е. фактически сворачивается целая ветвь исполнения программы и делается откат).

Например, какой-нибудь парсер от языка программирования, который состоит из большого количества вызовов, в том числе и рекурсивных. Логика парсера построена на разбор корректного текста. При появлении ошибки (которая может быть на 50-м уровне вложенности относительно начала работы) следует выдать диагностическое сообщение и сделать throw, который будет пойман в точке запуска парсера и там парсер завершит работу с ошибкой.

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

Ответ на поставленный ТС'ом вопрос однозначно нельзя дать в принципе. В каждом конкретном случае надо принимать конкретное решение.

Доводы про то, что throw-catch работает долго, вообще говоря, не состоятельные, т.к. ошибка - это по сути нештатная работа программы и потеря лишних сотых долей секунды никакой погоды не сделает

Цитата Сообщение от ~OhMyGodSoLong~ Посмотреть сообщение
Детектор: если вы пишете кодами возврата и у вас довольно часто встречается что-то вида
C
1
2
3
4
err = doSomething();
if (!err) {
    return err; // или goto error_handling, где обработка / return err;
}
то подумайте над переходом к исключениям
На мой взгляд это очередная попытка оценить качество программы количеством букв. Я для себя давно уже выработал главный критерий в выборе того или иного варианта написания кода: понятность кода для читающего (в том числе и того, кто впервые видит программу). Отрезанный от контекста пример не может служить доводом в пользу того или иного решения

Добавлено через 1 минуту
Цитата Сообщение от ForEveR Посмотреть сообщение
как раз вот коды ошибок постоянно проверять в разы проблемнее
Это зависит от того, что ты пишешь. Программу-самоделку или пользовательский софт. Для пользовательского софта выдача "что-то пошло не так", очевидно, не канает
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru