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
'Nice programing' 카테고리의 다른 글
속성 / 함수 단계 (F11)가 예상대로 작동하지 않습니다. (0) | 2020.12.01 |
---|---|
Vim에서 220 번째 열을 지나면 마우스가 작동하지 않는 이유는 무엇입니까? (0) | 2020.12.01 |
JavaScript에 C #과 유사한 람다 구문이 있습니까? (0) | 2020.12.01 |
Psql 출력에서 결과 집합 장식을 숨기는 방법 (0) | 2020.12.01 |
xUnit.net의 모든 테스트 전후에 한 번 코드 실행 (0) | 2020.12.01 |