Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / C++ Новый топик    Ответить
Топик располагается на нескольких страницах: 1 2 3      [все]
 Вывод ошибок не параметром метода какие есть варианты?  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 7558
bool
Book::Save(inst::Abstract *top, const QString &full_path, QString *err)
{
	QSaveFile out(full_path);
	out.open(QIODevice::WriteOnly | QIODevice::Truncate);
	
	QXmlStreamWriter xml(&out);
	WriteStartDocument(xml);
	top->Write(xml);
	xml.writeEndDocument();
	const bool ok = out.commit();
	
	if (!ok && err != nullptr)
		*err = QString("Failed to save as ") + full_path;
	
	return ok;
}

https://github.com/f35f22fan/Ods2/blob/master/ods/Book.cpp
Вывод ошибок не параметром метода какие есть варианты?
Я понимаю что try в плюсах не приветствуется. А так был бы вариант
2 фев 21, 23:15    [22273523]     Ответить | Цитировать Сообщить модератору
 Re: Вывод ошибок не параметром метода какие есть варианты?  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 52888

PetroNotC Sharp
Я понимаю что try в плюсах не приветствуется.

Кем не приветствуется? Не знаю как у Qt, а выкинуть std::runtime_error в данном случае
вполне нормальная идея.

Posted via ActualForum NNTP Server 1.5

2 фев 21, 23:26    [22273534]     Ответить | Цитировать Сообщить модератору
 Re: Вывод ошибок не параметром метода какие есть варианты?  [new]
petrav
Member

Откуда:
Сообщений: 2850
PetroNotC Sharp

Вывод ошибок не параметром метода какие есть варианты?

Русский язык. 9 класс. Учебник

PetroNotC Sharp
Я понимаю что try в плюсах не приветствуется.

LOL. Язык программирования С++. Бьерн Страуструп

PetroNotC Sharp
А так был бы вариант

Тут я привёл целых два и не варианта, а два обязательных направления.

PS: Я удивлён, что тебя поняли, потому что без коммента от Сибирякова я вообще не уразумел о чём ты пишешь.

Сообщение было отредактировано: 2 фев 21, 23:32
2 фев 21, 23:37    [22273538]     Ответить | Цитировать Сообщить модератору
 Re: Вывод ошибок не параметром метода какие есть варианты?  [new]
White Owl
Member

Откуда:
Сообщений: 12678
PetroNotC Sharp
Я понимаю что try в плюсах не приветствуется. А так был бы вариант
С чего это вдруг "не приветствуются"?

Qt может не кидать исключений - это да. И если следовать этой традиции (именно традиции "Qt без исключений"), то параметр QString *err это вполне нормально и кошерно.

А если собрать Qt с исключениями, то будешь себе try-catch писать вполне стандартно, традиционно и по учебнику. Там конечно свои потенциальные проблемы вылезут, которые легко решаются дисциплиной программиста, но... Поэтому чаще всего Qt и живет без исключений.

А варианты правильной работы и потенциальные проблемы читать тут: https://doc.qt.io/qt-5/exceptionsafety.html
3 фев 21, 00:04    [22273540]     Ответить | Цитировать Сообщить модератору
 Re: Вывод ошибок не параметром метода какие есть варианты?  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 52888

White Owl
Qt может не кидать исключений - это да.

Поскольку он может собираться как динамическая библиотека - лучше ему этого не делать.
Иначе всё становится очень сложно.

Posted via ActualForum NNTP Server 1.5

3 фев 21, 01:20    [22273570]     Ответить | Цитировать Сообщить модератору
 Re: Вывод ошибок не параметром метода какие есть варианты?  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 7558
petrav,
Не удивительно что не понял. Ты не работал с другими ЯП и вопросами по архитектуре.
Задай, уточняй, это форум.
3 фев 21, 07:00    [22273609]     Ответить | Цитировать Сообщить модератору
 Re: Вывод ошибок не параметром метода какие есть варианты?  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 7558
Qt может работать с исключениями, но
- читал мнение самих разрабов что это не в приоритете.
- они не выходят сами на уровень Application. Без перехвата руками на самом верху.
- через либу *.so не переходят.
Если не перехватить то молча все проглотится.
В общем коряво.
Если в плюсах std::runtime_error многие применяют, то могу попробовать.
3 фев 21, 07:09    [22273611]     Ответить | Цитировать Сообщить модератору
 Re: Вывод ошибок не параметром метода какие есть варианты?  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 7558
Давайте сначала обзор вариантов.
На вскидку придумал 3:
1. Глобальная переменная error
2. LastError WinApi
3. Логгер
3 фев 21, 07:14    [22273612]     Ответить | Цитировать Сообщить модератору
 Re: Вывод ошибок не параметром метода какие есть варианты?  [new]
crutchmaster
Member

Откуда: оттуда.
Сообщений: 2235
PetroNotC Sharp
На вскидку придумал 3:

Всё плохо. Возвращай { ret, err } как в гошечке.

Сообщение было отредактировано: 3 фев 21, 07:21
3 фев 21, 07:28    [22273613]     Ответить | Цитировать Сообщить модератору
 Re: Вывод ошибок не параметром метода какие есть варианты?  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 7558
Dimitry Sibiryakov,
>Кем не приветствуется?
==
автор
В с++ файналли не нужны, тут RAII есть.

21896029
3 фев 21, 07:32    [22273614]     Ответить | Цитировать Сообщить модератору
 Re: Вывод ошибок не параметром метода какие есть варианты?  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 7558
crutchmaster,
Гошечку не знаю.
В яве, дельфи, шарпе проблем нет.
3 фев 21, 07:33    [22273615]     Ответить | Цитировать Сообщить модератору
 Re: Вывод ошибок не параметром метода какие есть варианты?  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 7558
автор
При использовании QtConcurrent и исключений из стандартной библиотеки, текст исключения теряется, остаётся только информация о типе исключений. Например результатом такого кода:

http://nomatter.ru/ru/qtconcurrent_and_exceptions
3 фев 21, 08:01    [22273620]     Ответить | Цитировать Сообщить модератору
 Re: Вывод ошибок не параметром метода какие есть варианты?  [new]
crutchmaster
Member

Откуда: оттуда.
Сообщений: 2235
PetroNotC Sharp
В яве, дельфи, шарпе проблем нет.

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

Сообщение было отредактировано: 3 фев 21, 10:13
3 фев 21, 10:18    [22273657]     Ответить | Цитировать Сообщить модератору
 Re: Вывод ошибок не параметром метода какие есть варианты?  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 7558
crutchmaster,
Да.
Про потоки, то тут одинаковые подходы с другими ЯП. Перехват внутри потока.
Хотя, в шарпе с async await ловится снаружи
try
{
listTree = await obj.getAsync(....
3 фев 21, 10:40    [22273666]     Ответить | Цитировать Сообщить модератору
 Re: Вывод ошибок не параметром метода какие есть варианты?  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 7558
crutchmaster,
>Логер - я хз, как ты будешь вылавливать из него исключения,
== метод логгера это вместо
stringErrOut = sssssss
Писать
log.add(“xml атрибут аааааа не заполнен
..
То есть исключений не будет вообще.
3 фев 21, 10:59    [22273685]     Ответить | Цитировать Сообщить модератору
 Re: Вывод ошибок не параметром метода какие есть варианты?  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 7558
crutchmaster,
Цель двоякая при парсинге xml
- остановить если критическая ошибка типа версия не та
- пройти весь файл документ и вывалить юзверю ошибки шаблона документа Договор или Накладная или...
3 фев 21, 11:02    [22273689]     Ответить | Цитировать Сообщить модератору
 Re: Вывод ошибок не параметром метода какие есть варианты?  [new]
AmKad
Member

Откуда:
Сообщений: 5250
PetroNotC Sharp
Dimitry Sibiryakov,
>Кем не приветствуется?
==
автор
В с++ файналли не нужны, тут RAII есть.

21896029
Отсутствие finally еще не означает, что "исключения не приветствуются".
3 фев 21, 11:25    [22273711]     Ответить | Цитировать Сообщить модератору
 Re: Вывод ошибок не параметром метода какие есть варианты?  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 7558
AmKad,
Там по ссылке ниже код приведен. Что одно от другого зависит.
Формально слова разные. А логика кода вывернута шиворот навыворот. Разные концепции.
Мне жаль.
3 фев 21, 11:40    [22273722]     Ответить | Цитировать Сообщить модератору
 Re: Вывод ошибок не параметром метода какие есть варианты?  [new]
mayton
Member

Откуда: loopback
Сообщений: 50968
Топик будет не полным пока мы не обсудим costs на обработку exception.

В сравнении с возвратом boolean.
3 фев 21, 12:30    [22273746]     Ответить | Цитировать Сообщить модератору
 Re: Вывод ошибок не параметром метода какие есть варианты?  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 7558
mayton,
Угу. Сишникам только дай про скорость поговорить))))
3 фев 21, 12:48    [22273757]     Ответить | Цитировать Сообщить модератору
 Re: Вывод ошибок не параметром метода какие есть варианты?  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 7558
mayton,
Boolean нужен только при первом случае выше. А случаев два штуки.
3 фев 21, 12:49    [22273759]     Ответить | Цитировать Сообщить модератору
 Re: Вывод ошибок не параметром метода какие есть варианты?  [new]
mayton
Member

Откуда: loopback
Сообщений: 50968
Если язык и библиотеки рекомендуют использовать исключения (Java/C#) для обработки
непредвиденных ошибок - то надо использовать. Более того. Во многих языках с управляемой
кучей процесс обработки ошибки тестно завязан на корректное освободждение ресурсов.

Насчет С++ - сложно сказать является ли это общеупотребимой практикой. Это интересный вопрос.

И почему например при создании GoLang полностью отказались от механизма исключений. И на что заменили.
Тоже вопрос достойный обсуждения.
3 фев 21, 12:59    [22273765]     Ответить | Цитировать Сообщить модератору
 Re: Вывод ошибок не параметром метода какие есть варианты?  [new]
petrav
Member

Откуда:
Сообщений: 2850
mayton
Насчет С++ - сложно сказать является ли это общеупотребимой практикой. Это интересный вопрос.

В С++ как обычно бардак, раздрай и подводные камни. Примерно как со строками.

Программируя на Qt, конечно, можно использовать исключения. И в случае DLL тоже, но нужно уметь обходить подводные рифы.
3 фев 21, 13:09    [22273768]     Ответить | Цитировать Сообщить модератору
 Re: Вывод ошибок не параметром метода какие есть варианты?  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 52888
PetroNotC Sharp
В яве, дельфи, шарпе проблем нет.

Всё перечисленное - языки программирования. Qt - фреймворк (библиотека). Почувствуй разницу.


PS: Повторяю медленно: в библиотеке Qt исключения не приветствуются по вполне определённой причине - возможности динамической сборки. В языке программирования С++ с исключениями проблем нет.

Сообщение было отредактировано: 3 фев 21, 14:01
3 фев 21, 14:00    [22273850]     Ответить | Цитировать Сообщить модератору
 Re: Вывод ошибок не параметром метода какие есть варианты?  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 7558
Dimitry Sibiryakov,
Теорию я понял. Теперь по коду и практике. Выше ссылка как пишут с try в других ЯП.
3 фев 21, 14:24    [22273872]     Ответить | Цитировать Сообщить модератору
 Re: Вывод ошибок не параметром метода какие есть варианты?  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 52888

PetroNotC Sharp
Выше ссылка как пишут с try в других ЯП.

Ссылку на доку Qt - вижу.
Ссылку на то почему в C++ не нужно finally - вижу.
Не вижу ссылки на то "как пишут с try в других ЯП".

Posted via ActualForum NNTP Server 1.5

3 фев 21, 14:33    [22273887]     Ответить | Цитировать Сообщить модератору
 Re: Вывод ошибок не параметром метода какие есть варианты?  [new]
petrav
Member

Откуда:
Сообщений: 2850
Dimitry Sibiryakov

PS: Повторяю медленно: в библиотеке Qt исключения не приветствуются по вполне определённой причине - возможности динамической сборки. В языке программирования С++ с исключениями проблем нет.

Скорее Qt не работает с исключениями по историческим причинам. Когда они начинали разрабатывать Qt исключений в языке не было. Так и пошло... Или по идеологическим причинам, например, считают, что исключения делают разработку сложной, а программы ненадёжными.
3 фев 21, 14:46    [22273910]     Ответить | Цитировать Сообщить модератору
 Re: Вывод ошибок не параметром метода какие есть варианты?  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 52888

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

Или просто не смогли решить главную (и единственную) проблему исключений (не зависящую от
ЯП) - совпадение системы исключений, RTTI и RTL на всём call stack от места, где оно
выкидывается, до места, где оно ловится.

Posted via ActualForum NNTP Server 1.5

3 фев 21, 14:51    [22273920]     Ответить | Цитировать Сообщить модератору
 Re: Вывод ошибок не параметром метода какие есть варианты?  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 7558
Dimitry Sibiryakov,
21896099
try и финализация работают совместно и Удобно.
3 фев 21, 15:08    [22273956]     Ответить | Цитировать Сообщить модератору
 Re: Вывод ошибок не параметром метода какие есть варианты?  [new]
petrav
Member

Откуда:
Сообщений: 2850
Dimitry Sibiryakov

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

Или просто не смогли решить главную (и единственную) проблему исключений (не зависящую от
ЯП) - совпадение системы исключений, RTTI и RTL на всём call stack от места, где оно
выкидывается, до места, где оно ловится.

Вопрос совместимости. Если Qt собрано на VS 2017, а приложение на VS 2019, то будут ли проблемы?
Я уверен (почти) что нет. Проблем особых я не вижу. Точнее проблема только одна: Qt перестаёт
развиваться и мы просто не можем его пересобрать под новый компилятор.
3 фев 21, 15:08    [22273957]     Ответить | Цитировать Сообщить модератору
 Re: Вывод ошибок не параметром метода какие есть варианты?  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 7558
petrav,
Либы не нужно собирать в операционке. Ставить бинарниками.
3 фев 21, 15:10    [22273960]     Ответить | Цитировать Сообщить модератору
 Re: Вывод ошибок не параметром метода какие есть варианты?  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 52888

PetroNotC Sharp
try и финализация работают совместно и Удобно.

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

petrav
Я уверен (почти) что нет.

В тобой процитированном точно названы три условия. Ты не в состоянии проследить их
выполнение? Тогда считай, что оно работать не будет, ибо в противном случае ты получишь
зависимость поведения своей программы от погоды на Марсе.

Posted via ActualForum NNTP Server 1.5

3 фев 21, 15:25    [22273992]     Ответить | Цитировать Сообщить модератору
 Re: Вывод ошибок не параметром метода какие есть варианты?  [new]
mayton
Member

Откуда: loopback
Сообщений: 50968
PetroNotC Sharp
bool
Book::Save(inst::Abstract *top, const QString &full_path, QString *err)
{
	QSaveFile out(full_path);
	out.open(QIODevice::WriteOnly | QIODevice::Truncate);
....


Тут по логике надо проверить что open успешен. Вроде он тоже bool возвращает. Fail-fast.

Сообщение было отредактировано: 3 фев 21, 15:25
3 фев 21, 15:32    [22274009]     Ответить | Цитировать Сообщить модератору
 Re: Вывод ошибок не параметром метода какие есть варианты?  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 7558
Dimitry Sibiryakov,
>Ровно до момента, когда финализируемых объектов становится больше одного. RAII всё же
удобнее, как и прочие умные указатели.
==возможно. Только умные указатели для технической сборки мусора это одно (проще).
А для логики программного кода.... Ветвления.... Другое.
Я предпочитаю руками это творить (с)
))))
3 фев 21, 15:45    [22274033]     Ответить | Цитировать Сообщить модератору
 Re: Вывод ошибок не параметром метода какие есть варианты?  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 52888

PetroNotC Sharp
Я предпочитаю руками это творить (с)

Значит твой путь - возвращение текста ошибок через параметр руками. Вот и ответ на вопрос
топика.

Posted via ActualForum NNTP Server 1.5

3 фев 21, 15:53    [22274049]     Ответить | Цитировать Сообщить модератору
 Re: Вывод ошибок не параметром метода какие есть варианты?  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 7558
Dimitry Sibiryakov

PetroNotC Sharp
Я предпочитаю руками это творить (с)

Значит твой путь - возвращение текста ошибок через параметр руками. Вот и ответ на вопрос
топика.

Неа. Мы видели "жизнь других". Попробую класс Qt и класс std. Отпишусь.
3 фев 21, 17:07    [22274145]     Ответить | Цитировать Сообщить модератору
 Re: Вывод ошибок не параметром метода какие есть варианты?  [new]
bk0010
Member

Откуда:
Сообщений: 5053
mayton
Тут по логике надо проверить что open успешен. Вроде он тоже bool возвращает. Fail-fast.
В Qt надо проверять результаты всего, что можно проверить. После Delphi, с ее VCL, которая построена на exception-ах, мне было дико видеть, как после явной ошибки программа продолжает работать, вместо того, чтобы остановиться. Со временем привык постоянно проверять результаты, но сразу после перехода было очень тяжко.
3 фев 21, 22:08    [22274376]     Ответить | Цитировать Сообщить модератору
 Re: Вывод ошибок не параметром метода какие есть варианты?  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 7558
Подскажите как работать с исключениями в студии.
Нужен в отладке вывод номера строки кода где оно происходит или остановка ide на этой строке.
Если исключение обернуто try то ide не останавливается.
Если смотреть output то там нет номера строки.
Может как добавить в e.what() но не понял как сделать.
Студия 2015 может что с этим сделать?
7 апр 21, 15:11    [22305452]     Ответить | Цитировать Сообщить модератору
 Re: Вывод ошибок не параметром метода какие есть варианты?  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 7558
Хочется к в дельфи или вебсервере.
В дельфи открывается редактор на строке с райзе.
В веб серверах есть лог с подробнейшей инфой.
7 апр 21, 15:22    [22305460]     Ответить | Цитировать Сообщить модератору
 Re: Вывод ошибок не параметром метода какие есть варианты?  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 7558
Вот что выяснил.
Если исключение я генерю сам, то появляется окно
Картинка с другого сайта.
и редактор показывает строку с исключением.
Если исключение в
string.replace( index - 1
То окно уже не студии а C++ runtime library
Исключение внутри dll и
программа завершается. Отладка не работает.
Почему?
7 апр 21, 16:39    [22305528]     Ответить | Цитировать Сообщить модератору
 Re: Вывод ошибок не параметром метода какие есть варианты?  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 7558
Отчасти решено))
Надо вкл галку
Options - Enable Just My Code
))
Тогда студия не уходит в недра своего кода глубоко.
7 апр 21, 16:58    [22305546]     Ответить | Цитировать Сообщить модератору
 Re: Вывод ошибок не параметром метода какие есть варианты?  [new]
MasterZiv
Member

Откуда: Питер
Сообщений: 34684
PetroNotC Sharp
Qt может работать с исключениями, но
- читал мнение самих разрабов что это не в приоритете.
- они не выходят сами на уровень Application. Без перехвата руками на самом верху.
- через либу *.so не переходят.
Если не перехватить то молча все проглотится.
В общем коряво.
Если в плюсах std::runtime_error многие применяют, то могу попробовать.


чё за бред то?
7 апр 21, 23:15    [22305730]     Ответить | Цитировать Сообщить модератору
 Re: Вывод ошибок не параметром метода какие есть варианты?  [new]
petrav
Member

Откуда:
Сообщений: 2850
MasterZiv
PetroNotC Sharp
Qt может работать с исключениями, но
- читал мнение самих разрабов что это не в приоритете.
- они не выходят сами на уровень Application. Без перехвата руками на самом верху.
- через либу *.so не переходят.
Если не перехватить то молча все проглотится.
В общем коряво.
Если в плюсах std::runtime_error многие применяют, то могу попробовать.


чё за бред то?

Это PetroNotC Sharp.
7 апр 21, 23:21    [22305734]     Ответить | Цитировать Сообщить модератору
 Re: Вывод ошибок не параметром метода какие есть варианты?  [new]
MasterZiv
Member

Откуда: Питер
Сообщений: 34684
Dimitry Sibiryakov

PS: Повторяю медленно: в библиотеке Qt исключения не приветствуются по вполне определённой причине - возможности динамической сборки. В языке программирования С++ с исключениями проблем нет.


В самом Qt нет исключений, причём ясно, по какой причине: библиотека возникла, когда исключений в С++ ещё не было.
И в дальнейшем отказ от исключений в самом Qt тоже решили сохранить -- так фреймворк может использоваться в любых
приложениях, с включёнными исключениями и с выключенными.

Но использовать исключения в приложениях на Qt никто никогда не запрещал, используйте на здоровье!
7 апр 21, 23:23    [22305736]     Ответить | Цитировать Сообщить модератору
 Re: Вывод ошибок не параметром метода какие есть варианты?  [new]
MasterZiv
Member

Откуда: Питер
Сообщений: 34684
PetroNotC Sharp
Вот что выяснил.
Если исключение я генерю сам, то появляется окно
...
программа завершается. Отладка не работает.
Почему?


Так ловить надо исключения, если их используешь...
7 апр 21, 23:26    [22305740]     Ответить | Цитировать Сообщить модератору
 Re: Вывод ошибок не параметром метода какие есть варианты?  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 7558
MasterZiv
PetroNotC Sharp
Вот что выяснил.
Если исключение я генерю сам, то появляется окно
...
программа завершается. Отладка не работает.
Почему?


Так ловить надо исключения, если их используешь...
дак не ловятся сударь
std:string.begin() выход за диапазон
}
catch(три точки)
А когда поймал надо вывод номера строки кода. Ну или стек по желанию.

Сообщение было отредактировано: 8 апр 21, 07:46
8 апр 21, 07:45    [22305777]     Ответить | Цитировать Сообщить модератору
 Re: Вывод ошибок не параметром метода какие есть варианты?  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 7558
MasterZiv
Dimitry Sibiryakov

PS: Повторяю медленно: в библиотеке Qt исключения не приветствуются по вполне определённой причине - возможности динамической сборки. В языке программирования С++ с исключениями проблем нет.


В самом Qt нет исключений, причём ясно, по какой причине: библиотека возникла, когда исключений в С++ ещё не было.
И в дальнейшем отказ от исключений в самом Qt тоже решили сохранить -- так фреймворк может использоваться в любых
приложениях, с включёнными исключениями и с выключенными.

Но использовать исключения в приложениях на Qt никто никогда не запрещал, используйте на здоровье!

Их не запрещают. На них просто забили))) Поддержка в одном классе на задворках.
Весь топик об этом говорили.
Нельзя сделать и так и эдак да еще с удобствами“
8 апр 21, 07:59    [22305779]     Ответить | Цитировать Сообщить модератору
 Re: Вывод ошибок не параметром метода какие есть варианты?  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 7558
Я не спец.
Возможно оператор noexcept повлиял в моем случае.
Чего только не придумают)))
https://coderoad.ru/33210169/Как-использовать-noexcept-в-C-или-как-это-работает
8 апр 21, 09:09    [22305796]     Ответить | Цитировать Сообщить модератору
 Re: Вывод ошибок не параметром метода какие есть варианты?  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 7558
автор
Именно из-за такого разбухания кода, в некоторых крупных корпорациях (не будем тыкать пальцем в Google) при разработке на С++ запрещено использование исключений.
))))
Смешно.
8 апр 21, 09:14    [22305799]     Ответить | Цитировать Сообщить модератору
 Re: Вывод ошибок не параметром метода какие есть варианты?  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 7558
Подскажите галочку в студии.
Я запускаю F5 во время написания кода. Консольное.
Если есть ошибка, то все равно запускается "прошлая" версия.
Приходится сначала F6 и потом F5.
Надоедает.
Как тут автоматом? Как в дельфи))
8 апр 21, 15:20    [22306017]     Ответить | Цитировать Сообщить модератору
 Re: Вывод ошибок не параметром метода какие есть варианты?  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 7558
petrav,
Ну вот этот то вопрос выше тебе понятен?)))
8 апр 21, 15:48    [22306031]     Ответить | Цитировать Сообщить модератору
 Re: Вывод ошибок не параметром метода какие есть варианты?  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 7558
MasterZiv,
Хотелось как в шарпе
ex.Message
ex.Data[метка
ex.innerException
ex.ToString
ex.распечатайСтек
8 апр 21, 15:57    [22306040]     Ответить | Цитировать Сообщить модератору
 Re: Вывод ошибок не параметром метода какие есть варианты?  [new]
ъъъъъ
Member

Откуда:
Сообщений: 1941
PetroNotC Sharp
Dimitry Sibiryakov,
>Кем не приветствуется?
==
автор
В с++ файналли не нужны, тут RAII есть.

21896029

У вас, товарищ, кашка в головушке. Где это я писал, "что исключения не приветствуются"?
8 апр 21, 17:39    [22306100]     Ответить | Цитировать Сообщить модератору
 Re: Вывод ошибок не параметром метода какие есть варианты?  [new]
ъъъъъ
Member

Откуда:
Сообщений: 1941
PetroNotC Sharp
Подскажите галочку в студии.
Я запускаю F5 во время написания кода. Консольное.
Если есть ошибка, то все равно запускается "прошлая" версия.
Приходится сначала F6 и потом F5.
Надоедает.
Как тут автоматом? Как в дельфи))

Вот чума.
Потому что ты, получив сообщение об ошибках сборки и предложении запустить последнюю успешную, не только нажал "Да", но и установил флажок "больше не показывать".

F10->Tools -> Options -> Project and Solutions -> Build and Run

К сообщению приложен файл. Размер - 27Kb
8 апр 21, 17:59    [22306111]     Ответить | Цитировать Сообщить модератору
 Re: Вывод ошибок не параметром метода какие есть варианты?  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 7558
ъъъъъ
PetroNotC Sharp
Подскажите галочку в студии.
Я запускаю F5 во время написания кода. Консольное.
Если есть ошибка, то все равно запускается "прошлая" версия.
Приходится сначала F6 и потом F5.
Надоедает.
Как тут автоматом? Как в дельфи))

Вот чума.
Потому что ты, получив сообщение об ошибках сборки и предложении запустить последнюю успешную, не только нажал "Да", но и установил флажок "больше не показывать".

F10->Tools -> Options -> Project and Solutions -> Build and Run

Картинка с другого сайта.
спс
8 апр 21, 18:12    [22306118]     Ответить | Цитировать Сообщить модератору
 Re: Вывод ошибок не параметром метода какие есть варианты?  [new]
ъъъъъ
Member

Откуда:
Сообщений: 1941
PetroNotC Sharp
bool
Book::Save(inst::Abstract *top, const QString &full_path, QString *err)
{
	QSaveFile out(full_path);
	out.open(QIODevice::WriteOnly | QIODevice::Truncate);
	
	QXmlStreamWriter xml(&out);
	WriteStartDocument(xml);
	top->Write(xml);
	xml.writeEndDocument();
	const bool ok = out.commit();
	
	if (!ok && err != nullptr)
		*err = QString("Failed to save as ") + full_path;
	
	return ok;
}


https://github.com/f35f22fan/Ods2/blob/master/ods/Book.cpp
Вывод ошибок не параметром метода какие есть варианты?
Я понимаю что try в плюсах не приветствуется. А так был бы вариант

Зависит от того, куда эти ошибки после.
Мне лично нравится именно такой вариант, как в твоем коде.
Про исключения тут уже говорили, тоже использую.
Ещё - в одном моем проекте есть централизованный "диспетчер ошибок". Представляет собой сервер (в отдельной нити), просто слушающий сокет. То есть, сервер, просто принимающий сообщения и отправляющий их куда и кому надо (в лог, в графическую подсистему, по tcp кому-то), фактически актор. "Сообщения" - это сообщения zeromq, летающие через zmq - сокеты с использованием iproc - протокола (т.е., не tcp/не в сети).
Протокол inproc - зверски быстрый, не использует сеть, позволяет общаться между нитями внутри процесса.
То есть, получается примерно тот же throw, но с перехватом в одном месте.
8 апр 21, 18:25    [22306123]     Ответить | Цитировать Сообщить модератору
 Re: Вывод ошибок не параметром метода какие есть варианты?  [new]
mayton
Member

Откуда: loopback
Сообщений: 50968
ъъъъъ

Протокол inproc - зверски быстрый, не использует сеть, позволяет общаться между нитями внутри процесса.
То есть, получается примерно тот же throw, но с перехватом в одном месте.

Тут скорее всего речь идет не о перехвате. А о журналировании событий.

В точке где возникло исключение вы уже ничего не перехватили и принять решение никакое там уже
не сможете.
8 апр 21, 18:58    [22306137]     Ответить | Цитировать Сообщить модератору
 Re: Вывод ошибок не параметром метода какие есть варианты?  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 7558
ъъъъъ,
В линукс админы давно разделили.
Приложение пишет в лог.
А потом отдельные совершенно админские штучки читают эти логи, пакуют, агрегируют, анализируют и отправляют куда надо.
Разделение труда.
8 апр 21, 19:08    [22306144]     Ответить | Цитировать Сообщить модератору
 Re: Вывод ошибок не параметром метода какие есть варианты?  [new]
ъъъъъ
Member

Откуда:
Сообщений: 1941
mayton
ъъъъъ

Протокол inproc - зверски быстрый, не использует сеть, позволяет общаться между нитями внутри процесса.
То есть, получается примерно тот же throw, но с перехватом в одном месте.

Тут скорее всего речь идет не о перехвате. А о журналировании событий.

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

Ну, диспетчер сообщений может и решение принять. Правда, на "глобальном" уровне.
Я и написал - способ обработки зависит от того, что с самим фактом ошибки нужно делать.
8 апр 21, 19:11    [22306145]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: 1 2 3      [все]
Все форумы / C++ Ответить