소켓 프로그램을 진행 중입니다. 그것 에서 catch 블록 printStackTrace
의 IOException
객체에 대해 호출됩니다 . 실제로
무엇을 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()
방법은 클래스의 멤버 Throwable
의 java.lang
패키지로 제공된다.
답변
printStackTrace
Throwable
클래스 의 방법입니다 . 이 방법은 콘솔에 오류 메시지를 표시합니다. 소스 코드에서 예외가 발생합니다. 이러한 메서드는 catch 블록과 함께 사용할 수 있으며 다음을 설명합니다.
- 예외의 이름입니다.
- 예외에 대한 설명입니다.
- 소스 코드에서 예외 위치입니다.
콘솔에서 예외를 설명하는 세 가지 메서드 (printStackTrace가 그중 하나임)는 다음과 같습니다.
printStackTrace()
toString()
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());
}
}
}