История изменений
Исправление cobold, (текущая версия) :
Имхо использование исключений чисто как flow control это рак мозга. Я так пару раз делал, но чисто от лени переделывать интерфейсы, которые используют несколько классов. Понимаю, что это говнокод, и не пытаюсь прикрыть это решение тем что все вокруг мудаки и не понимают. К исключениям отношусь не очень хорошо. Да, структурированная обработка исключений вроде делает яснее логику программы, но с другой стороны, вот блок try {} вот в нем последовательность операторов. Как просто глядя на код понять какой из них может выбросить исключения и соответственно в этой точке прервётся исполнение, и что там могут быть за исключения чтобы понять обработается ошибка в окружающих catch(), а какие из них будут обработаны где-то уровнем выше? Вот эта неявная передача управления затрудняет понимание логики программы и это явно не про поддерживаемость кода. Если ловить и оборачивать каждый эксепшн нижнего уровня в эксепшн текущего, то черт возьми почему просто в явном виде не анализировать и не возвращать код результата выполнения?
Отдельное недоумение вызывает название исключения в виде SuccessException. Ну назови его OtherAppInstanceRunningException и лови в main или где там надо, тогда оно хотя бы понятно о чем это при взгляде на код
Исходная версия cobold, :
Имхо использование исключений чисто как flow control это рак мозга. Я так пару раз делал, но чисто от лени переделывать интерфейсы, которые используют несколько классов. Понимаю, что это говнокод, и не пытаюсь прикрыть это решение тем что все вокруг мудаки и не понимают. К исключениям отношусь не очень хорошо. Да, структурированная обработка исключений вроде делает яснее логику программы, но с другой стороны, вот блок try {} вот в нем последовательность операторов. Как просто глядя на код понять какой из них может выбросить исключения и соответственно в этой точке прервётся исполнение, и что там могут быть а исключения чтобы понять обработается ошибка в окружающих catch(), а какие из них будут обработаны где-то уровнем выше? Вот эта неявная передача управления затрудняет понимание логики программы и это явно не про поддерживаемость кода. Если ловить и оборачивать каждый эксепшн нижнего уровня в эксепшн текущего, то черт возьми почему просто в явном виде не анализировать и не возвращать код результата выполнения?
Отдельное недоумение вызывает название исключения в виде SuccessException. Ну назови его OtherAppInstanceRunningException и лови в main или где там надо, тогда оно хотя бы понятно о чем это при взгляде на код