Zgodnie z informacjami innych użytkowników należy użyć numeru System.exit()
, aby uzyskać żądane wyjście. Powodem tego jest to, że System.exit()
bezpośrednio ogranicza programy i kończy zwracanie wartości zgodnie z definicją.
Jeśli zastanawiasz się, dlaczego nie mogliśmy niczego powrót z metody main
, odpowiedź brzmi - w java main
metoda nigdy nie zwraca nic, jeśli analizować złoty wymaganego oświadczenia
public static void main()
można zobaczyć, w java main ma typ zwrotu jako void
.
Tak więc, jeśli sprawdzasz status powrotu programu java z programu wywołującego (w tym przypadku Shell), próbujesz odczytać rzeczywisty stan wyjścia z jvm
, a nie z twojego programu java, który byłby normalny warunek jest zawsze zerowy (0), nawet trudny, jeśli program ulegnie awarii z powodu jakiegokolwiek wyjątku. Otrzymasz niezerowy status wyjścia tylko wtedy, gdy jvm ulegnie awarii z powodu nieoczekiwanych przyczyn, takich jak OutOfMemory
lub coś podobnego krytycznego.
Mam nadzieję, że pomaga to w zrozumieniu sposobu przechwytywania statusu wyjścia programu java.
Czy istnieje inny sposób przechwytywania statusu, ponieważ w java System.exit() nie jest normalną drogą do wyjścia. – vino
można przechwytywać status za pomocą echo $ ?, nawet jeśli program java nie wychodzi z System.exit(), domyślnie zwraca 0 (oznacza sukces) statusu do Systemu Operacyjnego przy normalnym wyjściu z programu. – Stauz