Nice programing

Java에서 e.printStackTrace () 사용

nicepro 2020. 12. 1. 19:45
반응형

Java에서 e.printStackTrace () 사용


이것은 아마도 초보 질문이지만 당신이 나를 도울 수 있기를 바랍니다. :) 다음과 같은 것이 있습니다.

try
{ 
//try to do something there
}
catch (IOException e)
{
//handle the exception 
e.printStackTrace();
}

NetBeans IDE를 사용하고 있으며 어떤 이유로 printStackTrace가 구불 구불 한 선으로 밑줄이 그어져 있습니다. Alt + Enter를 누르면 Throwable.printStackTrace ()를 제거해야한다는 메시지가 표시됩니다. 이것은 무엇을 의미 하는가? 이것이 의미하는 바에 대해 더 많은 통찰력을 줄 수 있습니까? 아니면 무시해도 될까요?

감사!


그것은 단지 권장 사항입니다. 이클립스에서는 괜찮습니다-다른 답변과 마찬가지로 더 일반적인 방법이 있음을 알려주는 IDE 일뿐이라고 생각합니다. 디버깅에 유용하며, 치명적인 오류가 발생할 때 사용자에게 디버그 모드 (예 : 콘솔 스위치 -d)를 사용하여 이러한 로그를 수집하도록 알려야합니다.


시험:

e.printStackTrace(System.out);

아마도 printStackTrace()콘솔에서 스택을 덤프하는 것만 큼 오류를 실제로 처리하지 않기 때문일 것입니다 . 적절한 오류 처리 (필요한 경우)로 교체하고 출력을 일종의 로거로 교체 할 때까지 자리 표시 자 역할을합니다.


e.printStackTrace ();

대부분의 경우 콘솔 인 기본 ErrorStream으로 인쇄하기 때문에 좋지 않습니다!

NetBeans는 이에 대해 경고해야합니다. 이에 대한 좋은 방법은 메시지를 기록하는 것입니다. 동일한 참조를 따르십시오.

http://onjava.com/pub/a/onjava/2003/11/19/exceptions.html

편집 자세한 내용은 아래의 첫 번째 주석을 참조하십시오.


스택 추적을 인쇄하는 것만으로는 충분하지 않습니다. 예외의 스택 추적 자체를 인쇄하는 것이 완전히 나쁜 습관임을 의미하지는 않지만 예외가 발생할 때 스택 추적 만 인쇄하는 것이 문제입니다.

항상 예외를 기록 하되 ( 좋은 로깅 프레임 워크 사용 ) 최종 사용자에게 노출시키지 마십시오. 그리고 개발 모드에서만 스택 추적을 표시하는지 확인하십시오.

나는 (대부분의 시간) 사용 logger.log(Level.SEVERE, <exception>.getMessage(), <exception>);합니다.

netbeans가 ' Surround Statement with try-catch' 예외 처리를 제안 할 때 이것을 클릭하면 다음이 생성됩니다.

try {
    //something need to be handle(exception that throw)
} catch (SQLException ex) {
    Logger.getLogger(ClassName.class.getName()).log(Level.SEVERE, null, ex);
}

어느 것이 ex.printStackTrace();.

도움이 될 수 있습니다.

참고 URL : https://stackoverflow.com/questions/7100961/using-e-printstacktrace-in-java

반응형