Exceptions in software development are anomalous, unexpected conditions into which a program might enter if an unsupported operation gets executed. Exceptions break the flow of control and can either trigger a pre-configured handler or bubble up the stack.
The occurrence of an exception is generally known as a “throw” event. The handling of an exception is similarly known as a “catch” event.
Based on how exceptions are thrown and subsequently handled in a language, they fall under two main types:
Structured programming languages tend to use exceptions as errors. Using them for the flow of control can break the single entry-single exit paradigm of these languages and create multiple pathways within the program.
If an exception is thrown and not caught, it usually bubbles upward through the stack. Bubbling means that the exception thrown in a function moves upwards through the call stack unless a function handles it. Suppose the exception remains uncaught until the application level. In that case, the exception passes onto the runtime whose default behavior is to terminate the application with the error message and the stack trace showing the origin and flow of the exception.