Каковы рекомендации относительно кодов ошибок, возвращаемых консольным приложением? - PullRequest
4 голосов
/ 22 октября 2009

В c # вы можете вернуть целое число вызывающему абоненту, используя Environment.Exit (n) (что можно проверить, например, с помощью переменной ERRORLEVEL из сценария DOS).

Существуют ли передовые практики в отношении этих кодов?

Я думаю 0 = нет ошибки ... но есть ли номера зарезервированы? Могу ли я использовать отрицательные числа? и т.д.

Спасибо!

Ответы [ 2 ]

6 голосов
/ 22 октября 2009

Ноль обычно означает, что ошибок не было. Что касается других, я не думаю, что есть зарезервированный набор. Обычно я определяю, что означают разные коды возврата моего приложения, и документирую их.

DOS обрабатывает не более 256 возможных кодов возврата, но на самом деле я сомневаюсь, что вы когда-нибудь будете использовать / нуждаться в этом.

Вы можете использовать отрицательные значения, но учтите, что отрицательные значения не обязательно означают что-то отличное от положительных значений.

3 голосов
/ 22 октября 2009

Самое широкое использование кодов возврата, которые я видел, - это Robocopy. Он может служить руководством для других приложений. Robocopy использует коды возврата в качестве флагов:

0 × 10 Серьезная ошибка. Робокопия не скопируйте любые файлы. Это либо использование ошибка или ошибка из-за недостаточного права доступа к источнику или каталоги назначения.

0 × 08 Некоторые файлы или каталоги могут не копировать (произошли ошибки копирования и предел повторных попыток был превышен). Проверьте эти ошибки дальше.

0 × 04 Некоторые несоответствующие файлы или каталоги были обнаружены. Изучите выходной журнал. Домашнее хозяйство, вероятно, необходимо.

0 × 02 Некоторые дополнительные файлы или каталоги были обнаружены. Изучите выходной журнал. Может потребоваться некоторая уборка.

0 × 01 Один или несколько файлов были скопированы успешно (то есть новые файлы прибыли).

0 × 00 Ошибок не было, и нет копирование было сделано. Источник и деревья каталогов назначения полностью синхронизирован.

...