전에는 심각한 Java 코딩을 한 적이 없었지만 기존 기술 (Delphi 및 C #)을 기반으로 구문, 라이브러리 및 개념을 배웠습니다. 내가 이해하기 어려운 한 가지는 다음 printStackTrace
과 같이 조용히 예외를 소비하는 코드를 너무 많이 보았다는 것입니다 .
public void process() {
try {
System.out.println("test");
} catch(Exception e) {
e.printStackTrace();
}
}
내가 만난 거의 모든 Java 기사 및 프로젝트에는 이와 유사한 코드가 있습니다. 내 지식에 따르면 이것은 매우 나쁩니다. 예외는 거의 항상 다음과 같이 외부 컨텍스트로 전달되어야합니다.
public void process() {
try {
System.out.println("test");
} catch(Exception e) {
e.printStackTrace();
throw new AssertionError(e);
}
}
대부분의 경우 예외는 기본 프레임 워크 (예 : Java Swing)에 속하는 가장 바깥 쪽 루프에서 처리되어야합니다. Java 세계에서 이와 같이 코딩하는 것이 표준처럼 보이는 이유는 무엇입니까? 의아해합니다.
내 배경에 따라 printStackTrace를 완전히 제거하고 싶습니다 . 처리되지 않은 일명 RuntimeException
(또는 더 나은 방법 AssertionError
) 으로 간단히 다시 던진 다음 가장 적절한 위치 인 프레임 워크 가장 바깥 쪽 루프에서 잡아서 기록합니다.
public void process() {
try {
System.out.println("test");
} catch(Exception e) {
throw new AssertionError(e);
}
}