programing

시스템의 차이.exit(0), System.exit(-1), System.exit(1) (Java 의 경우)

prostudy 2022. 6. 27. 20:23
반응형

시스템의 차이.exit(0), System.exit(-1), System.exit(1) (Java 의 경우)

자바에서 다음과 같은 차이점을 알고 싶습니다.

System.exit(0);
System.exit(-1);
System.exit(1);

위의 코드는 언제 적절하게 사용해야 합니까?

exit 파라미터는 프로그램 실행이 성공했는지 실패했는지 여부를 확인합니다.오래된 프로그래밍 언어에서 유래한 것으로, 무엇이 잘못되었는지, 무엇이 잘못되었는지 알 수 있습니다.

종료 코드는

  • 0실행이 정상적으로 이루어졌을 때
  • 1,-1,whatever != 0에러가 발생했을 경우, 다른 종류의 에러에 다른 값을 사용할 수 있습니다.

올바른 종료 코드일 경우 예전에는 양수(UNIX에서는), 범위별로만 사용되었습니다.

  • 1-127는, 정의 「콜링 해 」입니다).exit(n))
  • 128-255SIGSEGV 또는 SIGTERM 등의 다른 Unix 신호에 의해 종단 처리로 생성되는 코드입니다.

하지만 자바에서 코딩하는 동안 신경 쓸 필요는 없다고 생각합니다.그것은 단지 약간의 정보일 뿐입니다.프로그램이 표준 도구와 상호 작용하도록 계획할 때 유용합니다.

Zero=>괜찮아?

Positive=> 뭔가 잘못될 가능성이 있다(명령줄이 나쁘다, 파일을 찾을 수 없다, 서버에 접속할 수 없다)

Negative=> 전혀 예상하지 못한 문제가 발생했습니다(시스템 오류 - 예상치 못한 예외 - 외부 강제 종료 등). kill -9)

(8비트 부호 있는 바이너리 또는 2개의 보완으로 간주할 경우 128보다 큰 값은 실제로는 음수입니다.)

여기 좋은 표준 출구 코드가 있어

System.exit(system call)셧다운 시퀀스를 시작하여 현재 실행 중인 Java 가상 머신을 종료합니다.인수는 상태 코드로 기능합니다.

관례상 0이 아닌 상태 코드는 비정상적인 종료를 나타냅니다.

  System.exit(0) or EXIT_SUCCESS;  ---> Success
  System.exit(1) or EXIT_FAILURE;  ---> Exception
  System.exit(-1) or EXIT_ERROR;   ---> Error

Java에서 자세히 보기

및 에서는 Unix "Linux " " "0이 성공했을 경우 및 「」를 참조해 주세요.1이데올로기 때문에

0경우는 0은 0은 0은 0은 은 0은 0으로 합니다.n != 0에 의미를 하는 것은

https://docs.oracle.com/javase/7/docs/api/java/lang/System.html 에서.

exit(0)일반적으로 정상적인 종료를 나타내기 위해 사용됩니다. exit(1) ★★★★★★★★★★★★★★★★★」exit(-1)또는 제로 이외의 값은 일반적으로 종료에 실패했음을 나타냅니다.

여기에 정답이 있다.

System.exit(0);// normal termination - Successful - zero
System.exit(-1);//Exit with some Error
System.exit(1);//one or any positive integer // exit with some Information message

gotcha는 255보다 큰 에러 코드는 에러 코드 % 256으로 변환됩니다.커스텀 에러 코드 > 255 를 사용하고 있어, 애플리케이션 로직으로 정확한 에러 코드를 상정하고 있는 경우는, 이 점에 특히 주의할 필요가 있습니다.http://www.tldp.org/LDP/abs/html/exitcodes.html

system.exit()에 입력된 숫자의 차이는 다른 답변에서도 설명되지만 실제 차이는 System.exit()이 호출 프로세스로 반환되는 코드라는 것입니다.운영체제에 의해 프로그램이 호출되고 있는 경우 반환코드는 system.exit()이 모든 것이 정상이었던 경우보다0을 반환했지만 문제가 없는 경우 상위 프로세스에 해당 핸들러가 있을 수 있음을 OS에 알립니다.

다른 사람의 대답대로0그렇지 않으면 성공을 의미하지

bat 파일(창)을 사용하는 경우System.exit(x)효과가 있습니다.

코드 자바(myapp):

if (error < 2){
    help();
    System.exit(-1);    
}
else{
    doSomthing();
    System.exit(0);
}

}

bat 파일:

java -jar myapp.jar
if %errorlevel% neq 0 exit /b %errorlevel%
rem -- next command if myapp is success --

System.exit(0) 규칙에서는 상태 코드가 0이면 종료가 성공했음을 나타냅니다.

System.exit (1) - 어떤 오류로 인해 종료가 실패했음을 의미합니다.

아래 코드를 보세요.

public static void main(String[] args) {
    **String s=null;**
    try {
        System.out.println("Exit");
        System.exit(1);
        **s.length();**
    }catch(Exception e) {
        System.out.println("Exception");
    }finally {
        System.out.println("finally");
    }}

여기서 exit(0) : 일반적으로 정상적인 종료를 나타내기 위해 사용됩니다.exit(1) 또는 exit(1) 또는 제로 이외의 값: 일반적으로 종료에 실패했음을 나타냅니다.인수로 무엇을 건네주든 제어 흐름은 항상 밖으로 나와 다음 아무것도 출력하지 않습니다.여기서 s.length가 예외를 던지기 때문에 catch block이 될 수도 있고 마지막으로 출력되지 않을 수도 있습니다.

class calc{
public static void main(String args[])
{
    int a, b, c;
    char ch;
    do{

        Scanner s=new Scanner(System.in);

                System.out.print("1. Addition\n");
                System.out.print("2. Substraction\n");
                System.out.print("3. Multiplication\n");
                System.out.print("4. Division\n");
                System.out.print("5. Exit\n\n");

                System.out.print("Enter your choice : ");
                ch=s.next().charAt(0);
                    switch (ch)
                    {
                        case '1' :
                        Addition chose1=new Addition();
                        chose1.add();
                        break;

                        case '2' :
                        Substraction chose2=new Substraction();
                        chose2.sub();
                        break;

                        case '3' :
                        Multiplication chose3= new Multiplication();
                        chose3.multi();
                        break;

                        case '4' :
                        Division chose4=new Division();
                        chose4.divi();
                        break;

                        case '5' :
                        System.exit(0);
                        break;

                        default :
                        System.out.print("wrong choice!!!");
                        break;
                    }
        System.out.print("\n--------------------------\n");                     
    }while(ch !=5); 
}

}

위의 코드에서는 System.exit(0)를 누르면 올바르게 종료되지만 System.exit(1)을 사용하면 올바르게 종료됩니다.또한 케이스 5를 누르면 오류가 발생하며 종료됩니다.또 케이스 15를 사용하여 다시 시도하면 inside 인수를 입력하면 i(4)를 입력하면 해당 위치에서 문자가 올바르게 종료된다는 것을 알 수 있습니다.그 문자열에서 5번째 문자를 꺼낸다는 것을 의미합니다. 만약 (3)이 있다면, 입력된 문자열에서 4번째 문자를 꺼낸다는 의미입니다.

언급URL : https://stackoverflow.com/questions/2434592/difference-in-system-exit0-system-exit-1-system-exit1-in-java

반응형