выход из функций в main

Я относительно новичок в Stackoverflow и Java, но у меня есть небольшой опыт работы с C. Мне понравился очень чистый способ выхода C из программ после сбоя с функцией «exit()».

Я нашел похожую функцию System.exit() в Java, чем она отличается от функции C и когда лучше использовать System.exit() вместо простого возврата в Java, как в основной функции void?


person AirUp    schedule 01.05.2012    source источник


Ответы (3)


System.exit() завершит инициализацию jvm для этой программы, где return; просто вернет управление из текущего метода обратно вызывающей стороне


См. также

person jmj    schedule 01.05.2012
comment
Это плохо? Если основная функция не работает, можно ли завершить работу JVM, если это простая программа? - person AirUp; 01.05.2012
comment
Да, должно быть нормально с обычной программой, но в основном она используется там, где мы хотим завершить работу приложения после реализации всех полученных ресурсов. - person jmj; 01.05.2012

System.exit() выйдет из программы независимо от того, кто ее вызывает и почему. return в основном выйдет из main(), но не убьет ничего, что его вызвало. Для простых программ разницы нет. Если вы хотите вызывать main из другой функции (которая может выполнять измерения производительности или обработку ошибок), это имеет большое значение. Третий вариант — генерировать неперехваченное исключение времени выполнения. Это позволит вам выйти из программы из глубины стека вызовов, позволит любому внешнему коду, вызывающему ваш main, программным способом перехватить и обработать выход, а при выходе предоставить пользователю контекст того, что пошло не так и где (как в отличие от статуса выхода, такого как 2).

person Konstantin Tarashchanskiy    schedule 01.05.2012

System.exit() может быть удобно, когда вы готовы завершить программу по условию пользователя (например, приложение с графическим интерфейсом). return используется для возврата к последней точке выполнения программы. Это очень разные операции.

person Makoto    schedule 01.05.2012