If an exception is thrown and not caught (operationally, an exception is thrown when there is no applicable handler specified), the uncaught exception is handled by the runtime; the routine that does this is called the . The most common default behavior is to terminate the program and print an error message to the console, usually including debug information such as a string representation of the exception and the stack trace. This is often avoided by having a top-level (application-level) handler (for example in an event loop) that catches exceptions before they reach the runtime.