[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Несколько вопросов вразброс



11.07.2012 19:24, "Артём Н." пишет:
On 11.07.2012 01:08, Igor Chumak wrote:
-Куть
Это если ты делаешь ошибку, которую тест уже ловит.  А если ты делаешь
ошибку, которую тест еще не ловит (а она будет, и не одна), то результат
будет тот же самый, как если бы теста не было вообще.  Внятная и
подробная диагностика поэтому обязательна.
Я и делаю. Как-раз хотел спросить (очередной провокационный вопрос).
Как организовывать обработку ошибок?>:-)
Т.е., вызывается функция. Она должна вернуть код завершения.
В функции м.б. вложенные функции.
В функции может выполниться только часть вызовов вложенных функций.
К примеру, бэкап БД не прошёл, но бэкап состояния пакетов, который делается
следующим, должен быть сделан.
Какой код возвращать?
Обычно возвращают статистику "время выполнения, сколько задач в  задании
провалилось, сколько файлов скопировано, сколько байт прочитано, сколько
записано...". Если какая-то часть логики вынесена в функцию,значит результат ее
должен что-то означать?
Я не про показ статистики, а именно про возврат кода.
Результат работы функции не обязательно short int ;)
Если очень хочется именно _кода_ - можно вернуть % успешно выполненных задач.

Можно писать ошибки в глобальный массив, в конце работы его анализировать.
М... Снова глобальный. :-|


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

Код возврата, вызванной программы, видимо, не вариант. Сделал на флагах.
Чтобы было понятно в какой функции произошла ошибка. Но как-то...
А как правильно?
Как сказано было выше, у perl есть use Carp; задачу "определить в какой функции
ошибка " поможет решить
Про Perl буду знать. Но, увы, в моём случае: shell.


Зачем такое ограничение??

Хотя в bash тоже есть
FUNCNAME
An array variable containing the names of all shell functions currently in the execution call stack.


Делаем функцию die(), которая анализирует и печатает FUNCNAME. Why not?


Reply to: