[JAVA] Exception과 Error, Checked와 Unchecked

nick·2024년 3월 15일
0

JAVA

목록 보기
5/13

오늘 알아볼 내용은
1. ErrorException이 무엇인지
2. Checked ExceptionUnchecked Exception의 차이는 무엇인지


💡Java 예외 구조

💡 Error란?

  • 자바 프로그램 밖에서 발생한 예외 → 시스템이 종료되어야 할 수준
    • 서버의 디스크 고장
    • 메인보드 고장 → 개발자가 미리 예측해 방지하기 어렵다

대표적인 에러

  1. OutOfMemoryError

    : JVM에 할당된 메모리 부족으로 더 이상 객체를 할당하지 못할 때 발생하는 오류

    • heap 사이즈 부족
    • GC가 더 이상 메모리 확보하지 못할 때
    • 네이티브 메모리 공간 부족
  2. StackOverFlowError

    • JVM 실행될 때 할당받은 stack의 크기를 넘어서서 메서드를 호출하게 되면 발생하는 오류

💡 Exception

  • 개발자가 구현한 로직에서 발생한 실수나 사용자의 영향에 의해 발생
  • Error와 달리 Exception은 개발자가 미리 예측해 방지할 수 있다
    • 대응 코드(Exception Handling)를 통해 프로그램을 종료시키지 않고 계속 실행 가능

대표적인 예외

  1. FileNotFoundException
    • 존재하지 않는 파일 이름 이름
    • 컴파일 시점에 발생 → Checked Exception
  2. NullPointException
    • null인 객체의 메소드나 변수에 접근하려고 할 때
    • 즉, null 값을 가진 객체에 **객체 접근 연산자인 토드(.)** 사용할 때
    • unchecked exception
  3. IllegalArgumentException
    • 적합하지 않거나, 적절하지 못한 인자를 메서드에 넘겨줄 때 발생함
    • unchecked exception
  4. ArrayIndexOutOfBoundsException
    • 배열 범위 벗어난 index로 배열에 접근할 때 발생
    • unchecked exception

Exception 종류 2가지

  1. **Runtime Exception**
    • unchecked Exception
  2. **Checked Exception**

❗ Error와 Exception의 차이

Error 발생 시, 프로그램은 종료되지만 Exception은 handling만 해주면 종료되지 않고 계속 실행할 수 있다

💡 Unchecked Exception

  • Runtime Exception이라고 함
  • 컴파일 시점에서 체크하지 않기에 unchecked exception이라고 부른다
  • 주로 개발자 실수 등으로 컴파일 이후 런타임 시점에 발생하는 예외들이다

대표적인 예외

  1. IndexOutOfBoundsException
  2. NullPointerException
  3. ClassCastException
    • 클래스 간 casting 잘못했을 때
  4. ArithmeticException
    • 정수를 0으로 나눴을 때

💡 Checked Exception

  • 컴파일 시점에 잡아주는 예외
  • ErrorUnchecked Exception제외한 모든 예외

대표적인 예외

  1. FileNotFoundException
  2. ClassNotFoundException
  3. DataFormatException

❗ Checked Exception과 Unchecked Exception의 차이 2가지

1. 꼭 예외 처리를 해줘야 하는가

  • checked꼭 예외 처리 해야함 try-catch로
    • 별도 예외 처리 안하면 컴파일 자체가 안된다
  • unchecked는 명시적인 예외 처리 안해도 된다

2. 언제 이 Exception을 확인하는가

  • checked exception은 컴파일 단계에서 확인
  • unchecked exception은 런타임 단계에서 확인

checked / unchecked 로 구분한 이유

  • checked exception으로 exception handling을 강제해서 좀 더 견고하게 코딩할 수 있도록 유도..?
  • unchecked exception을 통해 try-catch문을 강제하지 않고 개발자에게 좀 더 자유를 주는…?
profile
티스토리로 이전 : https://andantej99.tistory.com/

0개의 댓글