Коды возврата приложения Java - PullRequest
2 голосов
/ 06 мая 2010

У меня есть Java-программа, которая обрабатывает один файл за раз. Эта Java-программа вызывается из сценария-оболочки, который регистрирует код возврата из Java-программы. Есть 2 типа ошибок. Ожидаемые ошибки и неожиданные ошибки. В обоих случаях мне просто нужно их войти. Моя оболочка знает о 3 разных состояниях. 0-ОК, 1-PROCESSING_FAILED, 2- ОШИБКА.

Это правильный подход?

Вот мой подход:

enum ReturnCodes {OK,PROCESSING_FAILED,ERROR};

    public static void main(String[] args)
    {
        ...
            proc.processMyFile();
        ...
        System.exit(ReturnCodes.OK.ordinal());
    }
    catch (Throwable t)
    {
        ...
        System.exit(ReturnCodes.ERROR.ordinal());
    }


private void processMyFile()
{
    try
    {
        ...
    }catch( ExpectedException e)
    {
        ...
        System.exit(ReturnCodes.PROCESSING_FAILED.ordinal());
    }
}

Ответы [ 4 ]

4 голосов
/ 06 мая 2010

Соглашение должно иметь

  • Ноль за успех
  • Положительные числа для предупреждений
  • Отрицательные числа для ошибок

История, стоящая за этим, заключается в том, что коды ошибок в некоторых средах должны быть 8-битными значениями. Для серьезных ошибок по договоренности устанавливается старший бит (который фактически делает его -127 -> -1 для ошибок и 1 -> 127 для предупреждений)

Конечно, ANSI-C 99 определяет только два макроса, EXIT_SUCCESS, который равен 0, и EXIT_FAILURE, который является некоторым другим числом, которое не определено в спецификации.

1 голос
/ 06 мая 2010

Да, в этом нет ничего плохого. лично я не стал бы беспокоиться с Enum для этого, достаточно было бы несколько const.

0 голосов
/ 06 мая 2010

выглядит хорошо. Вы можете поместить оператор OK в блок finally. Мне нравится использование перечислений для фиксированных наборов констант.

0 голосов
/ 06 мая 2010

Это выглядит хорошо. Особенно важно, чтобы ваш код успеха равнялся 0, так как это соглашение, и скриптовые среды специально проверят это и примут ненулевое значение как ошибку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...