Error는 컴파일타임에 문법에러나, 런타임에 StackOverflowError
같은 오류로 인해 프로세스 자체적으로 복구가 불가능하며, 프로세스를 더 이상 실행할 수 없어 종료해야한다. JVM의 숨겨진 버그가 발생할 확률보다는 코드를 잘못짜거나(무한 재귀), JVM 설정을 수정해야할 확률(부족한 메모리 할당, OutOfMemoryError
)이 높다.
Exception은 프로세스 동작 도중 예외 상황이 발생하는 것이다. 예를 들어 네트워크 통신이 예기치 못하게 끊어 졌거나, 0으로 나누기를 시도하는 등의 예외 상황이 있을 수 있다. 예외는 발생하더라도 예외 처리를 통하여 복구 가능하며 프로세스를 계속 실행할 수 있다.
컴파일레벨에서 필수적으로 예외 처리를 해야하는 Exception이다. 예외 처리를 하지 않으면 컴파일을 실패한다. Runtime Exception 제외 전부이며, IOException
, ParseException
, DataFormatException
, CertificateException
,SQLException
등이 있다.
Runtime Exception을 상속하는 모든 Exception이다. ArithmeticException
, IndexOutOfBoundsException
, NegativeArraySizeException
, FileSystemAlreadyExistException
, FileSystemNotFoundException
, NullPointerException
등이 있다.
Error와 Exception은 Throwable을 상속한다.
https://gyoogle.dev/blog/computer-language/Java/Error%20&%20Exception.html
https://docs.oracle.com/javase/8/docs/api/java/lang/VirtualMachineError.html
https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html
https://docs.oracle.com/javase/8/docs/api/java/lang/RuntimeException.html