What does it do? The statement CATCH SYSTEM-EXCEPTIONS> introduces a control structure containing a statement block statement_block> that is always processed. In the list exc1 = n1 exc2 = n2 ...>, you can execute catchable runtime errors> and exception groups > in any order. The A directly specified number n1 n2 ...> must be assigned to each of them.
The OTHERS> addition can be executed independently or after the list exc1 = n1 exc2 = n2 ...>. Its effect is the same as specifying an exception group that includes all catchable runtime errors of the runtime environment.
The system handles the CATCH> control structure as follows: If one of the specified catchable runtime errors or a catchable runtime error contained in the specified exception groups occurs, the execution of the statement block> is immediately terminated, the program continues after the statement ENDCATCH>, and the number n1 n2 ...> assigned to the catchable runtime error or the exception group, is stored for evaluation in the system field sy-subrc>. If the list contains a catchable runtime error and its exception group or if a catchable runtime error occurs in some of the specified exception groups, sy-subrc> contains the assigned number of the first position in the list. If a catchable runtime error that is not listed in the statement CATCH SYSTEM-EXCEPTIONS> or is not contained in one of the specified exception groups occurs in the statement block, the program terminates with a short dump> If the end of the statement block is reached and no runtime error occurs, sy-subrc> is set to 0.
A CATCH> control structure cannot be defined in the sameprocessing block>, in which the class-based exceptions are handled in a TRY>> control structure or are raised by the statement RAISE EXCEPTION>> or by the addition THROW>> in a conditional expression>.
Latest notes:Catchable runtime errors are not passed from called procedures> to the caller. They can only be caught within a processing block. Within a processing block, catchable runtime errors are caught in control structures that can be nested in any depth. If multiple CATCH> control structures are nested, the system branches behind the ENDCATCH> statement of the inner CATCH> control structure that handles the runtime error. The handling of catchable runtime errors using CATCH SYSTEM-EXCEPTIONS> is obsolete and should be replaced by a TRY>> control structure. Since class-based exceptions are assigned to all catchable runtime errors, this is possible without restriction. The class-based exceptions can also be passed from a procedure using RAISING>, as well as by using TRY>.
Example ABAP Coding Catches all possible catchable runtime errors in a statement block. Catchable runtime errors of the exception group ARITHMETIC_ERRORS> set sy-subrc> to 4, all other catchable runtime errors set sy-subrc> to 8. The division by 0 causes the catchable runtime error COMPUTE_INT_ZERODIVIDE>, which is contained in the exception group ARITHMETIC_ERRORS>. In this case, sy-subrc> is also set to 4. DATA: result TYPE i, number TYPE i.