[Java] 자바에서 예외(Exception) 처리를 하는 이유
2022. 2. 26. 16:43ㆍBack-end/Java
프로그램을 만들다 보면 많은 오류가 발생한다. 자바는 안정성을 중요시하는 언어로 프로그램이 정상적으로 작동하게 하기를 위하는 것이다. 하지만 때로는 이러한 오류를 무시하고 싶을 때도 있고, 오류가 날 때 그에 맞는 적절한 처리를 하고 싶을 때도 있다. 그래서 자바는 try_catch, throw 구문을 이용해 오류를 처리한다.
프로그램 오류
컴파일 오류(compile error) : 프로그램 코드 작성 중 발생하는 문법적 오류
- 최근에는 개발 환경(IDE)에서 대부분의 컴파일 오류를 알려준다
실행 오류(runtime error) : 실행 중인 프로그램이 의도하지 않은 동작을 하거나 프로그램이 중지되는 오류
- 프로그램이 비정상적으로 종료되는 경우 시스템에 심각한 장애를 발생시킬 수 있다
예외 처리의 중요성
- 프로그램의 비정상 종료를 피하여 시스템이 원활하게 실행되도록 한다
- 실행 오류가 발생한 경우 오류의 과정을 재현하는 것은 현실적으로 힘들다
- 오류가 발생 시 log를 남겨서 log 분석을 통해 오류 원인을 파악하고 버그를 수정하는 것이 중요하다
오류와 예외 클래스
시스템 오류(error) : 가상 머신에서 발생, 개발자가 처리할 수 없는 오류
- 동적 메모리가 없는 경우, 스택 메모리 오버플로우 등
예외(Exception) : 프로그램에서 제어할 수 있는 오류
- 읽으려는 파일이 없거나 네트워크, DB(database) 연결이 안 되는 경우 등
자바는 안정성을 중요시하는 언어로 프로그램에서 발생하는 오류에 대해 문법적으로 예외 처리를 해야 한다
예외 클래스
- 모든 예외 클래스의 최상위 클래스는 Exception 클래스다
- 자바에서는 다양한 예외 처리를 위한 클래스가 제공된다
자바의 예외 처리 클래스는 엄청 많은데, 요즘은 개발 툴이 좋아서 클래스를 다 외울 필요는 없다
대표적으로 몇 가지만 알아보자
- ArithmeticException : 정수를 0으로 나눈 경우
- NullPointerException : 초기화되는 않은 Object를 사용한 경우
- ArrayIndexOutOfBoundsException : 배열의 크기를 넘어선 위치를 참조하려는 경우
- FileNotFoundException : 참조하는 파일이 지정된 위치에 존재하지 않는 경우
- ClassNotFoundException : 클래스가 로드되지 않은 경우
- InterruptedException : non-runnable 상태인 Thread.sleep(), join(), Object의 wait()를 Runnable 하게 만드는 경우
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO: handle exception
}
반응형
'Back-end > Java' 카테고리의 다른 글
[Java] 스레드(Thread) 우선순위 - (MIN, NORM, MAX)_PRIORITY (0) | 2022.02.27 |
---|---|
[Java] 스레드(Thread) 개념 정리 - sleep(), wait(), join() (0) | 2022.02.27 |
[Java] 스트림(Stream) 활용 예제 (0) | 2022.02.26 |
[Java] 스트림(Stream) - reduce() (0) | 2022.02.26 |
[Java] 스트림(Stream) (0) | 2022.02.24 |