순서
1. 예외 vs 에러
2. 대표적인 예외 처리 방법
3. 예외 출력 메소드 종류
4. 문제점
✅ 예외 vs 에러
➤ 예외
- 개발자가 예측하여 막을 수 있는, 처리 가능한 오류
ex) 형 변환 오류(ClassCastException), null 참조 오류(NullPointerException)
➤ 에러
- 개발자가 예측해도 막을 수 없는, 코드로 복구될 수 없는 오류
ex) 메모리 부족(OutOfMemoryError), 스택오버플로우(StackOverFlowError)
✅ 대표적인 예외 처리 방법
➤ Exception 객체
- 컴파일러가 정적으로 예외 처리 여부를 검사하는 예외 객체
- 컴파일러가 확인 가능한 예외 계층이기 때문에 try-catch 구문으로 예외를 직접 처리하거나
throws를 통해 메소드 밖으로 예외를 전달해야 함
➤ try-catch 구조
try {
//예외가 발생할 수 있는 코드
} catch (Exception e) {
//예외 e가 발생했을 경우, 이를 처리하는 코드
} finally {
//예외 발생 여부 상관 없이 수행되는 코드
}
✅ 예외 출력 메소드 종류
➤ getMessage()
- 예외의 원인을 간단하게 출력
➤ toString()
- 예외의 Exception 내용과 원인을 출력
➤ printStackTrace()
- 예외의 발생 위치를 찾아서 단계별로 출력
✅ 문제점
- 오류 메시지 생성 및 외부 출력 시, 예외 정보를 출력 시 민감한 정보가 노출될 수 있음
- 공격자가 상세 오류 정보와 프로그램의 내부구조를 쉽게 파악할 수 있음
➤ 해결책
- printStackTrace() 메소드를 최대한 사용하지 않도록 구현
- 오류 메시지를 최소한의 정보만 포함하여 생성
- 예외 발생 시 내부에서 처리하고 미리 정의한 메시지를 제공
'개발 공부' 카테고리의 다른 글
[iBatis SqlMaps] feat. DAO, DI (1) | 2023.10.06 |
---|---|
[미들웨어] feat. 클라우드 (0) | 2023.09.26 |
[@Autowired vs @RequiredArgsConstructor] feat. 의존성 주입 (0) | 2023.08.22 |
[@RequestParam vs @RequestBody vs @ModelAttribute] feat. 검증 (0) | 2023.08.21 |
[@RequestMapping] feat. HTTP 메소드 (0) | 2023.08.17 |