Error & Exception

김수환·2023년 10월 6일
0

Error

java.lang.Error 클래스의 서브클래스

  • 시스템 레벨에서 비정상적인 상황이 발생한 경우
  • JVM에서 발생시키는 것
  • 에플리케이션에서는 에러에 대한 처리는 신경 쓰지 않아도 된다.

Exception

java.lang.Exception 클래스와 그 서브클래스로 정의
에러와 달리 개발자들이 만든 애플리케이션 코드의 작업중에 발생한다.

  • 체크 예외와 언체크 예외로 구분된다.

Checked Exception

Exception의 서브클래스이면서 Runtime Exception을 상속하지 않은 것들.

  • 일반적으로 예외라고 하면 Runtime Exception을 상속하지 않은 체크 예외를 의미한다.
  • 체크 예외를 발생시킬 수 있는 함수를 사용할 경우 반드시 예외를 처리하는 코드를 작성해야 한다. (그렇지 않으면 컴파일 에러가 발생한다!)
  • Example :
    • SQLException
    • IOException

자바 초기 설계자들은 발생가능한 예외를 모두 체크 예외로 처리하려고 한 것 같다.
IOException, SQLException 등 예외 상황에 던져질 가능성이 있는 것들을 모두 체크예외로 만들었다.

Unchecked Excption

java.lang.RuntimeException의 서브클래스

  • 명시적인 예외처리를 하지 않아도 되기에 "Uncheked" Exception이라는 이름이 붙었다.
    (대표 클래스 RuntimeException의 이름을 따 런타임 예외라고도 불린다.)
  • Error와 마찬가지로 throws, catch를 안해줘도 된다.
    (물론 명시적으로 thorws로 선언해주어도 된다.)
  • 개발자가 부주의해서 발생할 수 있는 경우에 발생하도록 만든 예외다.
  • Example :
    • NullPointerException : 객체를 할당하지 않은 레퍼런스 변수 사용 하는 경우.
    • IllegalArgumentException : 허용되지 않은 값을 사용해서 메소드를 호출할 때 발생

여담

체크예외의 예외처리 강제 때문에 try - catch, 무책임한 thorws가 남발됐다.

  • 최근에 등장하는 자바 표준 API들은 예상가능한 예외를 다루는 코드들을 체크 예외로 만들지 않는 경향이 있다.
profile
hello human

0개의 댓글