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

Откуда:
Сообщений: 7556
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

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

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

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

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

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

Posted via ActualForum NNTP Server 1.5

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

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

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

Откуда:
Сообщений: 7556
Давайте сначала обзор вариантов.
На вскидку придумал 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

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

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

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

Откуда:
Сообщений: 7556
автор
При использовании 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

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

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

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

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

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

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

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

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

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

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

Откуда: loopback
Сообщений: 50960
Если язык и библиотеки рекомендуют использовать исключения (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

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

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


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

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

Откуда:
Сообщений: 7556
Dimitry Sibiryakov,
Теорию я понял. Теперь по коду и практике. Выше ссылка как пишут с try в других ЯП.
3 фев 21, 14:24    [22273872]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2 3   вперед  Ctrl      все
Все форумы / C++ Ответить