When runtime exceptions occur, programs do not continue running. An exception handler function is executed immediately, before even the next machine instruction executes, much less the next statement.
When a program is running in the PDE, the exception handler invokes the PDE, which reports the error in a runtime error window. The program has not been terminated yet, however, so debug features like the function call window and variables window are available to help determine the cause of the exception. It's even possible to fix certain problems and let the program continue in some situations. For example, if a=b/c causes a divide-by-zero exception because c=0 , you can set c to a non-zero value in the variable window and continue execution of the program. You could also move the current execution pointer to the next line with D ebug J ump to skip the divide statement completely.
By default, standalone programs and libraries terminate upon exceptions, though they can install their own exception handler to work around many exceptions or at least terminate more gracefully - see XstGetExceptionFunction() and XstSetExceptionFunction() in the standard library.