System is one that the container or JVM throws, whereas Application Exception are exceptions that you throw directly in your code. Basically your own made up exceptions, but not limited completely to that.
Any exception that is a subclass of Exception, but not a subclass of RuntimeException and RemoteException, is an application exception. All the application exceptions are checked exceptions, So, when we call another method in our method that can throw an application exception, we must either declare it in the throws clause of the calling method or catch it in the body of the calling method or both.
All system exceptions are unchecked exceptions except RemoteExceptions and it can't be handled by the user.
---------- SCJP 1.4 | SCWCD 1.4 | SCBCD 1.3 | SCEA Part I - In Progress