💥Error & Exception
실행되고 있는 프로그램이 비정상적인 종료가 된다거나 오작동을 하게 되면 심각한 문제를 야기하게 됩니다. 이러한 문제를 야기하는 원인에는 바로 Error와 Exception이 있습니다. 이번 포스팅은 Error(오류)와 Exception(예외)의 차이를 명확히 구분하고, 예외 처리(Exception Handling)에 대해 알아보도록 하겠습니다.
💥오류(Error)
JAVA에서의 발생 Error는 크게 3가지로 구분된다.
- 컴파일 에러(Compile - Error)
- 런타임 에러(Runtiome - Error
- 논리적 에러(Logical - Error)
컴파일 에러는 실행되기 전 컴파일 단계에서 발생하는 문제이기 때문에 충분히 해결할 수 있고, 반면에 런타임 오류는 실행 도중 개발자의 설계 미숙 또는 하드웨어적인 요소에 문제가 발생하였을 경우 발생한다. 기계적인 결함은 사전에 대처할 수 없지만, 설계 미숙으로 발생하는 에러는 충분히 해결할 수 있다. 사실 필자가 가장 많이 마주친 에러는 바로 논리적 에러(Logical - Error)이다. 프로그램의 logic을 구현하고, 테스트를 해보면 의도한 바대로 결과가 나오지 않는다. 이것이 바로 논리적 에러(Logical - Error)이고 이 부분도 충분히 처리할 수 있다. 그렇다면 처리할 수 있는 오류가 예외인가?
💥예외(Exception)
수많은 오류 중 개발자가 사전에 예측하여 대처할 수 있는 오류가 예외이다. 정확히 예외가 무엇인지 알기 위해서는 JAVA에서 오류와 예외를 어떻게 구분하는지 알아야 한다. JAVA에서는 아래 그림과 같이 Throwable 클래스를 오류와 예외 모두 상속받는다. JAVA의 공식 문서에 따르면 Throwable 클래스는 발생한 에러나 예외에 대응하는 메시지가 있고, 예외 발생 시 예외 정보를 담을 수 있다.
💥예외 처리(Exception Handling)
결과적으로 에러와 예외를 구분한 이유는 에러와 예외를 구별하여 처리할 수 있는 사항은 처리하기 위함입니다. 이러한 기술적인 처리를 예외 처리(Exception Handling)라고 합니다.
💥try - catch - finally 구문
JAVA에서는 try - catch -finally 구문을 사용하여 예외 처리가 가능합니다. 기본 사용법은 다음과 같습니다.
try {
예외가 발생할 것 같은 코드
} catch (Exception e) {
예외 발생시 실행 코드
} finally {
일반 실행 코드
}
- 예외 발생O : try 블록 내부 코드 실행 -> catch 블록 내부 코드 실행 -> finally 블록 내부 코드 실행
- 예외 발생X : try 블록 내부 코드 실행 -> finally 블록 내부 코드 실행
'Languages > Java' 카테고리의 다른 글
[JAVA]로깅에 System.out.println()을 사용하지 않는 이유 (11) | 2023.01.12 |
---|---|
[JAVA]Iterator란? (16) | 2023.01.09 |
[JAVA] 생성자(Constructor) (4) | 2023.01.05 |
[JAVA] 데이터의 기본타입, 참조타입 (6) | 2022.12.19 |
[JAVA]HashMap의 사용 방법 및 기본 메서드 (1) | 2022.11.29 |