개발 등/중급

System.exit();

darkhorizon 2008. 8. 7. 17:43
728x90
반응형
자바 프로그램을 종료하면서 운영체제에 에러 코드를 돌려주는 방법입니다. C언어에서는 return 0; 이나 return 1; 등으로 반환할 수 있지만,

자바의 main (메인 메서드;함수) 은 반환값이 void형이기에 return문으로 값을 돌려 주지 못합니다. 만약 강제로 돌려주면 cannot return a value from method whose result type is void 이런 에러가 납니다. 그렇다고 해서 메인을 "public static int main(String[] args)" 이렇게 정수형으로 고치면, Exception in thread "main" java.lang.NoSuchMethodError: main 이런 에러가 납니다.

자바의 메인 메서드에서는 return문이 아닌, System.exit() 이라는 메서드로 반환값을 돌려주면 됩니다.

에러가 없이 정상적으로 종료되었을 때는
System.exit(0);
이렇게 0을 운영체제에 돌려주고, 에러가 있을 때에는 0이 아닌 값을,
System.exit(1);
이렇게 보통 1을 돌려줍니다.

다음 예제는 알아 보기 쉽게끔 999 라는 값을 돌려줍니다.

메인의 반환 값 (에러 코드; Error Code) 돌려주기 예제


소스 파일명: Example.java
public class Example {
  public static void main(String[] args) {

    System.out.println("탈출 코드 테스트 프로그램");

    System.exit(999);
  }
}


컴파일 및 실행 결과 화면:
D:\Z>javac Example.java && java Example
탈출 코드 테스트 프로그램

D:\Z>
D:\Z>
D:\Z>
D:\Z>echo %errorlevel%
999

D:\Z>


그런데 프로그램이 운영체제에 돌려준 반환값은, 사람의 눈에는 보이지 않습니다.

이것을 보기 위해서는 윈도우2000/XP 의 경우, 도스창에서

echo %errorlevel%

이렇게 하면 됩니다. ERRORLEVEL 이라는 이름의 윈도우 환경변수에, 최근에 실행한 프로그램의 반환값이 항상 자동으로 들어가 있기 때문입니다.



System.exit()이 없을 때의 종료 반환값


System.exit()을 사용하지 않았을 경우, 자바 프로그램은 에러가 났든 아니든, 항상 0을 돌려줍니다.

출처 :  http://mwultong.blogspot.com/2007/03/java-main-return-exit-code.html
728x90