11 ноября 2022

Возврат значений из метода при exception

При выходе из метода по exception параметры, переданные по ссылке, изменяются, если они были изменены до вызова exception. Параметры, переданные по значению, не изменяются.

class lcl_report definition.
  public section.
    class-methods:
      main.
  private section.
    class-methods:
      method_with_exception
        exporting
          ev_value type char10
        returning
          value(rv_value) type char10
        raising
          zcx_error.
endclass.

class lcl_report implementation.
  method main.
    try .
        data(lv_val1) = value char10( ).
        lv_val1 = 'OLD_VALUE'.
        data(lv_val2) = value char10( ).
        lv_val2 = 'OLD_VALUE'.
        method_with_exception(
          importing
            ev_value = lv_val1
          receiving
            rv_value = lv_val2 ).
      catch zcx_error.
    endtry.

    " lv_val1 = 'NEW_VALUE'.
    " lv_val2 = 'OLD_VALUE'.
  endmethod.

  method method_with_exception.
    clear: ev_value.

    ev_value = 'NEW_VALUE'.
    rv_value = 'NEW_VALUE'.

    raise exception type zcx_error.
  endmethod.
endclass.

Комментариев нет:

Отправить комментарий