출처: 중간 이 게시물은 Java에서 예외를 효과적으로 처리하는 방법을 더 잘 이해하는 데 도움이 될 것입니다. Java 예외를 처리하는 것은 어려울 수 있습니다. 처리할 Java 예외, 다시 발생시킬 예외, 단순히 무시할 예외를 결정하는 것은 어려울 수 있습니다. 그러나 예외를 처리하고 새 애플리케이션을 만드는 데 효과적으로 도움이 될 수 있는 유용한 지침이 많이 있습니다. 그들에 대해 알아 봅시다.
- 기록하는 내용에 주의하세요.
- 발생한 예외를 무시하지 마십시오.
- 전역 예외 처리기를 사용하십시오.
- 리소스를 수동으로 닫지 마세요.
- 일찍 발생하고 나중에 예외를 처리합니다.
- Java 예외는 기록되거나 다시 발생되어서는 안 됩니다.
- 억제된 예외를 검사합니다.
- throw 문에서는 예외를 정확하게 선언합니다.
- 가장 명백한 예외를 먼저 처리하십시오.
- 최신 예외 처리 의미 체계를 사용합니다.
1. 기록하는 내용에 주의하세요
소프트웨어 개발자는 보안 및 개인 정보 보호에 대한 고객의 권리를 항상 알고 있어야 합니다.- Java 프로그램은 데이터를 다른 시스템으로 이동할 수 있으며 수많은 개발자와 관리자가 이를 사용하여 작업할 수 있습니다(버그 수정 포함).
- 민감한 데이터가 로그 파일에 기록되면 회사는 보안 요구 사항을 준수하지 않게 되며 직장을 잃을 수도 있습니다.
2. 던져진 예외를 무시하지 마세요
예외를 포착한 다음 무시하지 마십시오. 예외를 숨기는 것은 Java에서 예외를 처리하는 좋은 방법이 아닙니다. 최소한 예외 이름과 관련 메시지를 적어 두십시오. 이렇게 하면 문제에 대한 정보를 항목에서 찾을 수 있습니다. 숨겨진 예외로 인해 Java 애플리케이션을 디버깅하는 것은 엄청나게 어렵습니다.3. 전역 예외 처리기 사용
프로그램 실행 중에 이전에 코드에서 포착되지 않은 몇 가지 예외가 항상 발생합니다. 따라서 포착되지 않은 예외를 처리하려면 항상 전역 예외 처리기를 추가하세요. 이렇게 하면 예외를 기록하고 처리할 수 있을 뿐만 아니라 런타임 시 예외가 발생하더라도 응용 프로그램이 중단되는 것을 방지할 수 있습니다.4. 리소스를 수동으로 닫지 마세요
Java 예외를 처리할 때 또 다른 중요한 권장 사항은 JVM이 닫히는 리소스에 대해 close() 메서드를 호출하도록 허용하는 것입니다. 직접 닫으려고 하지 마십시오. 이는 try-resources 모듈 내부의 리소스를 초기화하여 쉽게 달성할 수 있습니다 . 의미론:public class TryWithResourcesExample {
public static void main(String[] args) throws Exception {
try (Door door = new Door()) {
door.swing();
} catch (Exception e) { ..... }
} finally { .....}
}
}
보시다시피, try...catch 블록이 완료된 후 JVM은 리소스를 닫아 복잡하고 수정하기 어려운 리소스 누수 가능성을 제거합니다.
5. 일찍 예외를 발생시키고 나중에 처리하십시오.
코드에서 예외 조건이 발생할 때마다 예외를 발생시킵니다. 현재 메소드를 종료하기 전에 코드 줄이 실행될 때까지 기다리지 마십시오. 예외를 포착할 때 함수는 메서드 끝에 배치되어야 합니다. 이렇게 하면 메서드의 catch 블록 수가 줄어들어 코드를 더 쉽게 읽고 유지 관리할 수 있습니다.6. Java 예외는 기록되거나 다시 발생되어서는 안 됩니다.
예외가 발생하면 다음 중 하나를 수행하십시오.- 예외를 기록하는 동안 프로그램 작업을 계속하십시오.
- 예외를 다시 발생시키고 데이터를 기록하는 다른 방법을 허용합니다.
try {
Class.forName("com.min.Example");
} catch (ClassNotFoundException ex) {
log.warning("Class was not found.");
throw ex;
}
이로 인해 코드가 중복되고 로그 파일이 중복 항목으로 막혀 코드 진단이 훨씬 더 어려워집니다.
GO TO FULL VERSION