Error: An Error indicates serious problem that a reasonable application should not try to catch.
> 애플리케이션이 잡지 말아야 할 심각한 에러(핸들링이 어려운 에러)
Exception: Exception indicates conditions that a reasonable application might try to catch.
> 애플리케이션이 잡을 수 있는 에러(핸들링이 할 수 있는 에러)
[ ClassNotFoundError vs NoDefClassFoundError ]
ClassNotFoundExceptionis an exception that occurs when you try to load a class at run time usingClass.forName()orloadClass()methods and mentioned classes are not found in the classpath.
> 런타임에 Class.forName() 혹은 loadClass() 메소드를 사용했고 refrection에 사용된 class가 classpath에 없는 경우 발생
NoClassDefFoundErroris an error that occurs when a particular class is present at compile time, but was missing at run time.
Checked Exception : Java forces you to handle these error scenarios in some manner in your application code.
> java 가 핸들링을 강요하는 exception (ex: sqlException, IOException)
Unchecked Exception : A method is not forced by compiler to declare the unchecked exceptions thrown by its implementation. Generally, such methods almost always do not declare them, as well.
Spring Transaction only supervise Unchecked Exceptions.
> 핸들링을 강요하지 않는 exception (ex: NullPointerException)