catch (Exception e) {
logger.error ("something wrong", e);
//  or
logger.debug ("something wrong", e);
...
}


===================================================================================

e.getMessage() = 에러 이벤트와 함께 들어오는 메세지를 출력한다.

e.getMessage(): 출력문구

 

e.toString() = 에러 이벤트의 toString()을 호출해서 간단한 에러 메시지를 확인한다.

e.toString(): java.lang.Exception: 출력문구

 

e.printStackTrace() = 에러 메세지의 발생 근원지를 찾아서 단계별로 에러를 출력한다.

e.printStackTrace(): java.lang.Exception: 출력문구

at ExThrowException.main(ExeThrowException.java:6)

[출처] e.getMessage(),e.toString(),e.printStackTrace() 사용하기|작성자 하이트


JAVA 코딩시 가장 많이 사용하는 코드 중 하나가 

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

이다.

printStackTrace() 외에도 printStackTrace(PrintWriter writer); 도 존재하고 printStackTrace(PrintStream s); 역시 존재하기 때문에 stackTrace 의 내용을 파일등에 남기는 것은 그리 어려운 일이 아니다.

하지만 Log4J 등을 사용하거나 별도로 자신이 만든 로그라이브러리등을 사용할때는, 이를테면

logger.error(e.printStackTrace()); 

이런식으로 사용할 수가 없기 때문에, StackTrace 의 내용을 얻어야 하는데...
getMessage() 또는 getLocalinzedMessage()를 사용할 수도 있지만 StackTrace에 비해서는 디버깅 정보가 약간 빈약하기 때문에 적절하지 못하다.

JDK 1.4부터 getStackTrace() 라는 메소드가 추가되었는데 이 메소드는 StackTraceElement의 배열을 리턴해준다.
따라서 이를 이용해서

try {
   // ...
}
catch(Exception e){
   StackTraceElement[] elem = e.getStackTrace();
   for ( int i = 0; i < elem.length; i++ )
      logger.error(elem[i]);
}

와 같은 식으로 처리를 해주면 종종 쓸만하다.


출처 - http://wwhite103.tistory.com/entry/JAVA-eprintStackTrace


근데 마지막 logger.error(elem[i]); 적용 안 되네...


===================================================================================


e.printStackTracae 의 경우 문제가 있을 수 있다
해서...

try {
...
} catch(Exception e) {
StackTraceElement[] ste = e.getStackTrace();
String className = ste[0].getClassName();
String methodName = ste[0].getMethodName();
int lineNumber = ste[0].getLineNumber();
String fileName=ste[0].getFileName();
logger.severe("Exception : " +e.getMessage());
logger.severe(classNAme+"."+methodName +" "+fileName+" "+lineNumber+" line");

}


출처 - http://www.ezslookingaround.com/blog/tech/?no=1699






Posted by linuxism
,