JAVA

Error 와 Exception

소농배 2020. 5. 2. 17:01

Error

  • Error 는 심각한 시스템 레벨의 문제를 의미한다
  • Error 는 예상할 수 없으며 복구할 수 없는 비정상적인 상태이므로 catch 할 수 없다.

Exception

  • 예외란 프로그램이 실행되는 동안 발생한 이벤트이다. 예외는 정상적인 프로그램 수행을 방해한다.
  • 함수안에서 Error 가 발생하면 함수는 예외 객체를 생성하여 실행중인 시스템에 전달한다.
  • 예외 객체는 에러 타입과 에러가 발생했을때 시스템의 상태를 포함하고 있다.
  • 예외 객체를 만들어서 실행중인 시스템에게 전달하는 것을 '예외를 던지다' 라고 표현한다.

함수가 예외를 던지면 실행중인 시스템은 예외를 핸들링 할 수 있는 Exception Handler를 가지고 있는 함수를 Call Stack 에서 찾아 나간다.

발생한 Exception 을 핸들링 할 수 있는 Exception Handler 를 Call stack 의 역순으로 찾아나가며 찾게 되면 Exception Handler 에게 예외를 전달한다.

Exception Handler 가 처리할 수 있는 예외를 전달 받는 것을 catch exception 이라고 부른다.

 

실행중인 시스템이 모든 Call Stack 의 method 를 확인하였으나 Exception Handler 를 찾지 못하면 시스템은 종료된다.

 

Checked Exception

  • Compile 타임에 모두 catch 되어야만 하는 Exception
  • 잘 작성된 application 은 Checked Exception 에 대한 대비가 모두 되어있어야함.
  • RuntimeExceptuon 을 상속받지 않은 나머지 예외들.

Runtime Exception

  • RuntimeException 을 상속받은 모든 예외들.
  • 대부분 로직의 에러와 같은 프로그램상의 버그
  • catch 하여 처리할 수 있다.
  • 명시적인 처리를 강요하지 않는다. 때문에 RuntimeException 에 의해서 시스템이 종료될 수 있겠다!

Errors and runtime exceptions are collectively known as unchecked exceptions.

 

출처 : https://docs.oracle.com/javase/tutorial/java/index.html