특히 log4j에 대한 질문이있는 경우 확실하지 않지만 그 API는 log.error(Object,Throwable)
을 호출하여 첫 번째 매개 변수로 메시지를 전달하고 두 번째 매개 변수로 오류를 전달하기 만하면됩니다. (log
은 당연히 Log4J를 로거 참조입니다.)
log.error
를 호출하는 곳의 질문에 대해서는, Throwable
당신의 CustomExceptionClass
서브 클래스 내에서 log.error
를 호출하지 않습니다. 대신 다음과 같이 결정을 내릴 것입니다 :
정확히 무슨 일이 일어 났는지에 대한 세부 정보를 기록하려고하지만이 세부 정보를 Exception의 하위 클래스에 넣지 않으려는 경우 오류를 던지기 전에 세부 정보를 기록하십시오 .
마찬가지로 예외가 잡히는 지 여부에 관계없이 특정 항목을 기록하려면 예외를 throw하기 전에이 작업을 수행해야합니다. 비공개 방식을 호출하는 사람은 상대적으로 거의 제어 할 수 없습니다.
그렇지 않으면 catch 블록에 로그인하십시오. 이를 통해 어떤 일이 발생했는지 그리고 애플리케이션이 어떻게 응답했는지 추적 할 수 있습니다. 처음 정보가 있다면 다른 사람들은 "무엇을 이해할 수 있습니까?"라는 코드를 읽어야합니다.
마지막으로 모든 스레드에 대해 catch되지 않는 예외 처리기를 사용하는 것이 좋습니다. 자세한 내용은 Thread.UncaughtExceptionHandler
을 참조하십시오. 기본적으로 장기 실행 응용 프로그램에서 모든 예외를 최소한 기록해야합니다.