JAVA

Error 와 Exception(Checked, Unchecked)

네이버 웹툰 인턴 면접 중 받았던 질문인데 개발하면서 익셉션을 던지고 받아서 처리한적이 여러번 있는데 설명하라고 하니 .....

자바 Error와 Exception 상속 구조

에러(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/

 

custom exception을 언제 써야 할까?

우아한테크코스의 두 크루인 오렌지와 우가 싸우고 있다. 왜 싸우고 있는지 알아보러 가볼까? 오렌지 : 아니 굳이 사용자 정의 예외 안 써도 됩니다!! 우 : 아닙니다!! 써야 합니다!!! 사용자 정의

woowacourse.github.io

 

 

다음글에서는 예외처리에 대해서 정리해보려고 합니다. ㅎ