Я думаю, что это может произойти только в том случае, если ваша JVM завершает работу до того, как System.exit(1)
действительно выполнится.Как вы думаете, это возможно в вашей системе?
Либо код с System.exit(1)
выполняется в потоке демона, и поэтому, когда все другие живые (не демонные) потоки заканчивают работать, JVM завершает работу чисто(или не совсем точно, поскольку вы все равно можете получить 0 код выхода, если ваша программа генерирует исключение!)
В качестве альтернативы, как предположил @Erick Robertson, возможно, что-то изменяет состояние выхода из ловушки или чего-то еще, хотя яЯ не уверен, как это возможно.
Примечание: пожалуйста, не обращайте внимания на мой предыдущий комментарий.Вызов System.exit(1)
завершит все запущенные в настоящий момент потоки демона / не демона.