네이버 웹툰 인턴 면접 중 받았던 질문인데 개발하면서 익셉션을 던지고 받아서 처리한적이 여러번 있는데 설명하라고 하니 .....
에러(Error)
에러(Error)란 컴퓨터 하드웨어의 오동작 또는 고장으로 인해 응용프로그램에 이상이 생겼거나 JVM 실행에 문제가 생겼을 경우 발생하는 것
따라서 개발자가 미리 예측하여 처리할 수 없기 때문에, 애플리케이션에서 오류에 대한 처리를 신경 쓰지 않아도 된다.
예외(Exception)
사용자의 잘못된 조작 또는 개발자의 잘못된 코딩으로 인해 발생하는 프로그램 오류.
예외가 발생하면 프로그램이 종료가 된다는 것은 에러와 동일하지만 예외는 예외처리(Exception Handling)를 통해 프로그램을 종료되지 않고 정상적으로 작동되게 만들어줄 수 있습니다. 자바에서 예외처리는 Try Catch문을 통해 해 줄 수 있습니다.
Checked Exception과 Unchecked Exception
- Checked Exception : 예외처리가 필수이며, 처리하지 않으면 컴파일X. JVM 외부와 통신(네트워크, 파일시스템 등)할 때 주로 쓴다.
- RuntimeException 이외에 있는 모든 예외
- IOException, SQLException 등
- Unchecked Exception : 컴파일 때 체크되지 않고, runtime에 발생하는 Exception을 말한다.
- RuntimeException 하위의 모든 예외
- NullPointerException, IndexOutOfBoundException 등
예외 종류
대표적인 예외
- NullPointerException : Null 레퍼런스를 참조할때 발생, 뭔가 동작시킬 때 발생한다.
- (XXX)IndexOutOfBoundsException : 배열과 유사한 자료구조(문자열, 배열, 자료구조)에서 범위를 벗어난 인덱스 번호 사용으로 발생
- (XXX)FormatException : 문자열, 숫자, 날짜 변환 시 잘못된 데이터(ex. "123A" -> 123 으로 변환 시)로 발생, 보통 사용자의 입력, 외부 데이터 로딩, 결과 데이터의 변환 처리에서 자주 발생한다.
- ArthmeticException : 정수를 0으로 나눌때 발생
- ClassCastException : 변환할 수 없는 타입으로 객체를 변환할 때 발생
- IllegalArgumentException : 잘못된 인자 전달 시 발생
- IOException : 입출력 동작 실패 또는 인터럽트 시 발생
- IllegalStateException : 객체의 상태가 매소드 호출에는 부적절한 경우
- ConcurrentModificationException : 금지된 곳에서 객체를 동시에 수정하는것이 감지될 경우 발생
- UnsupportedOperationException : 객체가 메소드를 지원하지 않는 경우 발생
예외를 상속받아서 직접 예외를 만들 수 있다.
커스텀 익셉션 관련해서 좋은 글이 있어서 보시길 추천드립니다.
https://woowacourse.github.io/javable/post/2020-08-17-custom-exception/
다음글에서는 예외처리에 대해서 정리해보려고 합니다. ㅎ
'JAVA' 카테고리의 다른 글
자바 final 키워드 (0) | 2021.06.05 |
---|---|
자바 예외 다루기 - 에러 처리 방식 (0) | 2021.05.31 |
Queue 구현 해보기 (자바) (0) | 2021.05.24 |
Stack 구현 해보기 (자바) (0) | 2021.05.24 |
JVM GC(Garbage Collection) - 자바에서 메모리 관리하는 방법 (0) | 2021.04.30 |