Skip to content

ABAP Keyword Documentation →  ABAP - Reference →  Program Flow →  Exception Handling →  Class-Based Exceptions 


Short Reference

Other versions: 7.31 | 7.40 | 7.54


 [CATCH [BEFORE UNWIND] cx_class1 cx_class2 ... [INTO oref].
  [CLEANUP [INTO oref].


The statement TRY introduces a control structure with multiple statement blocks. The first statement block try_block is always executed, whereas a branching off to exactly one of the remaining statement blocks only occurs if a class-based exception is raised in try_block.

A TRY control structure defines the following statement blocks:

  • A TRY block try_block directly after the statement TRY. The TRY block defines a protected area whose class-based exceptions can be handled in the subsequent CATCH blocks. If no exception is raised in the TRY block and it reaches its end, the system resumes processing after ENDTRY. If a class-based exception is raised in the TRY block, the system searches for an exception handler in the same TRY control structure or in an external structure (see System Behavior).
  • One or more optional CATCH blocks catch_block for handling exceptions, each directly after a CATCH statement. If the end of a CATCH block is reached without it being left early, the processing continues after the ENDTRY.
  • An optional CLEANUP block cleanup_block for cleanups directly after the CLEANUP statement.

A TRY control structure invalidates the simultaneous use of the obsolete statement CATCH SYSTEM-EXCEPTIONS to handle catchable runtime errors in the current processing block.


  • All statement blocks of a TRY control structure can contain any kind of control structures, in particular further TRY control structures.
  • No exceptions (except those in category CX_NO_CHECK from event handlers) can be propagated from the static constructors and event handlers, which means they must always be handled locally.