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