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

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

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



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

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

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

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

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


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

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

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

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


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

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


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