
This allows for a certain category of errors to be captured and dealt with before the program effectively starts. Namely, there is a process of dynamic loading, linking, and initializing of classes and interfaces by the Java Virtual Machine (JVM) that occurs at the very beginning of execution of any Java application.


In Java, some of these runtime errors (namely throwable objects which are not exceptions) are triggered at a very early stage, while the program is basically starting up. Runtime errors are, therefore, harder to detect and prevent than compile-time errors. Runtime errors occur when a program is being executed and, in the case of compiled languages, after the program has been successfully compiled.
