From 338cf6a35801d8ecb0cd0aa90fdeaa47824e56d5 Mon Sep 17 00:00:00 2001 From: yellappam Date: Sat, 20 Feb 2021 22:17:43 +1300 Subject: [PATCH] Background logic to log exception and continue (#4534) When executing the background logic if a repo processing fails, then log the error and continue processing with next repository. Co-authored-by: Lars Hvam --- .../zcl_abapgit_background.clas.abap | 31 +++++++++++-------- 1 file changed, 18 insertions(+), 13 deletions(-) diff --git a/src/background/zcl_abapgit_background.clas.abap b/src/background/zcl_abapgit_background.clas.abap index 766e8334d..f84e5b347 100644 --- a/src/background/zcl_abapgit_background.clas.abap +++ b/src/background/zcl_abapgit_background.clas.abap @@ -76,6 +76,7 @@ CLASS ZCL_ABAPGIT_BACKGROUND IMPLEMENTATION. lt_list TYPE zcl_abapgit_persist_background=>ty_background_keys, li_background TYPE REF TO zif_abapgit_background, li_log TYPE REF TO zif_abapgit_log, + lx_error TYPE REF TO zcx_abapgit_exception, lv_repo_name TYPE string. FIELD-SYMBOLS: LIKE LINE OF lt_list. @@ -101,22 +102,26 @@ CLASS ZCL_ABAPGIT_BACKGROUND IMPLEMENTATION. WRITE: / 'Background mode'. LOOP AT lt_list ASSIGNING . - lo_repo ?= zcl_abapgit_repo_srv=>get_instance( )->get( -key ). - lv_repo_name = lo_repo->get_name( ). - WRITE: / -method, lv_repo_name. + TRY. + lo_repo ?= zcl_abapgit_repo_srv=>get_instance( )->get( -key ). + lv_repo_name = lo_repo->get_name( ). + WRITE: / -method, lv_repo_name. - zcl_abapgit_login_manager=>set( - iv_uri = lo_repo->get_url( ) - iv_username = -username - iv_password = -password ). + zcl_abapgit_login_manager=>set( + iv_uri = lo_repo->get_url( ) + iv_username = -username + iv_password = -password ). - CREATE OBJECT li_log TYPE zcl_abapgit_log. - CREATE OBJECT li_background TYPE (-method). + CREATE OBJECT li_log TYPE zcl_abapgit_log. + CREATE OBJECT li_background TYPE (-method). - li_background->run( - io_repo = lo_repo - ii_log = li_log - it_settings = -settings ). + li_background->run( + io_repo = lo_repo + ii_log = li_log + it_settings = -settings ). + CATCH zcx_abapgit_exception INTO lx_error. + li_log->add_exception( lx_error ). + ENDTRY. zcl_abapgit_log_viewer=>write_log( li_log ). ENDLOOP.