[java] Java에서 printStackTrace () 메서드를 사용하는 방법은 무엇입니까?

소켓 프로그램을 진행 중입니다. 그것 에서 catch 블록 printStackTraceIOException객체에 대해 호출됩니다 . 실제로
무엇을 printStackTrace()합니까?

catch(IOException ioe)
{
    ioe.printStackTrace();
}

나는 그 목적을 알지 못한다. 그것은 무엇을 위해 사용됩니까?



답변

Exception인스턴스 의 스택 추적인쇄하는 인스턴스 의 메서드입니다.System.err .

매우 간단하지만 예외를 진단하는 데 매우 유용한 도구입니다. 무슨 일이 있었는지, 코드에서이 일이 발생한 위치를 알려줍니다.

다음은 실제로 사용되는 방법의 예입니다.

try {
    // ...
} catch (SomeException e) {
    e.printStackTrace();
}


답변

저도 이것에 대해 호기심이 많았습니다. 그래서 제가하는 일을 볼 수있는 작은 샘플 코드를 모았습니다.

try {
    throw new NullPointerException();
}
catch (NullPointerException e) {
    System.out.println(e);
}

try {
    throw new IOException();
}
catch (IOException e) {
    e.printStackTrace();
}
System.exit(0);

전화 println(e):

java.lang.NullPointerException

전화 e.printStackTrace():

java.io.IOException
      at package.Test.main(Test.java:74)


답변

예외를 추적하는 데 도움이됩니다. 예를 들어 프로그램에 몇 가지 메서드를 작성하고 있고 메서드 중 하나가 버그를 유발합니다. 그런 다음 printstack은 버그를 일으키는 방법을 식별하는 데 도움이됩니다. 스택은 다음과 같이 도움이 될 것입니다.

먼저 메인 메소드가 호출되어 스택에 삽입되고, 두 번째 메소드가 호출되어 LIFO 순서로 스택에 삽입되며, 메소드 내부 어딘가에서 오류가 발생하면이 스택이 해당 메소드를 식별하는 데 도움이됩니다.


답변

printStackTrace()프로그래머가 실제 문제가 발생한 위치를 이해하는 데 도움이됩니다. 패키지 printStacktrace()클래스 Throwable의 메서드입니다 java.lang. 출력 콘솔에 여러 줄을 인쇄합니다. 첫 번째 줄은 여러 문자열로 구성됩니다. Throwable 하위 클래스의 이름과 패키지 정보를 포함합니다. 두 번째 줄부터는 다음으로 시작하는 오류 위치 / 줄 번호를 설명합니다.at .

마지막 줄은 항상 오류 / 예외의 영향을받는 대상을 설명합니다. 두 번째 마지막 줄은 마지막 줄에 설명 된 줄 번호에서 전송 된 후 컨트롤이 이동하는 스택의 다음 줄에 대해 알려줍니다. 오류 / 예외는 스택 형식의 ​​출력을 나타내며, 이는 클래스의 fillInStackTrace()메서드에 의해 스택에 공급되었으며, Throwable자체적으로 프로그램 제어 전송 세부 정보를 실행 스택에 채 웁니다. 로 시작하는 줄 at은 실행 스택의 값일뿐입니다. 이런 식으로 프로그래머는 코드에서 실제 문제가 어디에 있는지 이해할 수 있습니다.

printStackTrace()방법 과 함께 e.getmessage().


답변

printStackTrace()소스 코드에서 예외가 발생한 위치를 인쇄하므로 프로그램을 작성한 작성자가 무엇이 잘못되었는지 확인할 수 있습니다. 그러나 소스 코드에 문제가 있기 때문에 코딩 경험이 있거나없는 사용자는 무엇이 잘못되었는지 이해하지 못할 수 있습니다. 따라서 프로그램이 사용자가 작성자에게 오류 메시지를 보낼 수 있도록 허용하면 사용자는 무엇이 잘못되었는지에 대한 좋은 데이터를 제공하지 못할 수 있습니다.

Logger.getLogger()메소드를 고려해야 하며 더 나은 예외 처리 (로깅) 기능을 제공하며 printStackTrace()인수가없는 것 외에는 사용되지 않는 것으로 간주되며 사용자 표시가 아닌 디버깅 목적으로 만 사용해야합니다.


답변

printStackTrace()프로그래머가 실제 문제가 발생한 위치를 이해하는 데 도움 이 됩니다. printStackTrace()방법은 클래스의 멤버 Throwablejava.lang패키지로 제공된다.


답변

printStackTraceThrowable클래스 의 방법입니다 . 이 방법은 콘솔에 오류 메시지를 표시합니다. 소스 코드에서 예외가 발생합니다. 이러한 메서드는 catch 블록과 함께 사용할 수 있으며 다음을 설명합니다.

  1. 예외의 이름입니다.
  2. 예외에 대한 설명입니다.
  3. 소스 코드에서 예외 위치입니다.

콘솔에서 예외를 설명하는 세 가지 메서드 (printStackTrace가 그중 하나임)는 다음과 같습니다.

  1. printStackTrace()
  2. toString()
  3. getMessage()

예:

public class BabluGope {
    public static void main(String[] args) {
        try {
            System.out.println(10/0);
         } catch (ArithmeticException e) {
             e.printStackTrace();
             // System.err.println(e.toString());
             //System.err.println(e.getMessage());  
         }
    }
}