본문 바로가기
개발 공부

[예외 처리 방법] feat. 에러

by 도됐좋 2023. 8. 28.
순서
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() 메소드를 최대한 사용하지 않도록 구현

- 오류 메시지를 최소한의 정보만 포함하여 생성

- 예외 발생 시 내부에서 처리하고 미리 정의한 메시지를 제공