powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Передача текста ошибки как результат функции
7 сообщений из 7, страница 1 из 1
Передача текста ошибки как результат функции
    #38595497
Дэн543
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день!

В проекте обнаружил следующий код.

Код: c#
1.
2.
3.
4.
5.
            errMsg = UpdateContract();
            if (errMsg != "")
            {
                ErrorMessage.Text = errMsg;
            }



Программист здесь решил не использовать исключения.
Является ли анти-паттерном передача текста ошибки как результат функции?
...
Рейтинг: 0 / 0
Передача текста ошибки как результат функции
    #38595523
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дэн543,

Нет.
...
Рейтинг: 0 / 0
Передача текста ошибки как результат функции
    #38595528
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
То что не используются исключения никакого криминала нет. Например WinAPI их не использует. Тут на вкус и цвет ... Главное чтобы не было каши из половины кода с исключениями и второй половины с возвратом ошибок.

Но и возврат ошибки текстом не самое лучшее решение. Как потом эту ошибку анализировать. Хотя если анализ не нужен, а нужен только сам факт ошибки и описание (чтобы пользователю показать или в лог написать), то вполне нормально когда вызывающий уровень знает куда выводить, а вызываемый сообщает что писать.
...
Рейтинг: 0 / 0
Передача текста ошибки как результат функции
    #38595543
Дэн543
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dima TТо что не используются исключения никакого криминала нет. Например WinAPI их не использует. Тут на вкус и цвет ... Главное чтобы не было каши из половины кода с исключениями и второй половины с возвратом ошибок.

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

Два соображения.
1. Сейчас анализ ошибок не нужен. Но вполне возможно, в будущем понадобится. В этом случае переписывать весь код?
2. Мне понадобилось, чтобы эта функция вернула определенное значение (идентификатор контракта, который она обновила). Но возвращаемое значение уже занято.
...
Рейтинг: 0 / 0
Передача текста ошибки как результат функции
    #38595560
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дэн543Два соображения.
1. Сейчас анализ ошибок не нужен. Но вполне возможно, в будущем понадобится. В этом случае переписывать весь код?
Зачем? Только функцию. Передай указатель на переменную куда код ошибки записать. Сделай его NULL по умолчанию.
Код: sql
1.
UpdateContract(int* error = NULL)


или установить через SetMyLastError() и читать GetMyLastError()

Обычно изнутри гораздо проще сформировать описание ошибки чем снаружи.

Дэн5432. Мне понадобилось, чтобы эта функция вернула определенное значение (идентификатор контракта, который она обновила). Но возвращаемое значение уже занято.
Завтра понадобится вернуть два значения... Для этого есть передача параметров по ссылке или указателю.
...
Рейтинг: 0 / 0
Передача текста ошибки как результат функции
    #38595959
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TТо что не используются исключения никакого криминала нет. Например WinAPI их не использует.
.

Как ни странно, WinAPI использует исключения.


Dima TНо и возврат ошибки текстом не самое лучшее решение. Как потом эту ошибку анализировать.

А это правильно замечено.
...
Рейтинг: 0 / 0
Передача текста ошибки как результат функции
    #38596236
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivКак ни странно, WinAPI использует исключения.
То WinAPI которое я использовал ни разу исключений не вызывало, только ошибки возвращало. Если уж быть точным - исключения были, но из-за кривых передаваемых параметров, например передача указателя на несуществующий адрес в памяти.
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Передача текста ошибки как результат функции
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]