Если вы вызываете исключение в Catch, и над ним нет ничего, чтобы перехватить его, то это приведет к остановке службы. Метод OnStart () нуждается в try / catch. Если вы не хотите останавливать службу при возникновении исключительной ситуации, вам нужно обработать ее (войти в систему и двигаться дальше, или как угодно).
Я предпочитаю обрабатывать ожидаемые исключения и иметь непредвиденные исключения, либо вызывать остановку службы, либо, по крайней мере, автоматически останавливать / перезапускать. Если произойдет что-то неожиданное, ваш сервис будет работать в неизвестном состоянии, и кто знает, что он будет делать.