簡體   English   中英

如何將本地異常對象傳遞給類?

[英]How to pass a local exception object to a class?

我想在類方法中傳遞一個錯誤本地對象,該對象將向用戶顯示詳細錯誤。

這是當前代碼:

CATCH cx_root INTO lcx_general_error.
  DATA(lv_longtext) = lcx_general_error->get_longtext( ).
  lcx_general_error->get_source_position(
            IMPORTING
                program_name    = lv_program_name
                include_name    = lv_include_name
                source_line    = lv_program_line
                ).
  DATA(lv_program_include) = |{ lv_program_name }/ { lv_include_name }|.
  DATA(lv_length_message) = strlen( lv_longtext ).
  DATA(lv_error_message1) = lv_longtext(50).
  IF lv_length_message > 50.
    DATA(lv_remaining) = lv_length_message - 50.
    DATA(lv_error_message2) = lv_longtext+50(lv_remaining).
  ENDIF.

  MESSAGE e001 WITH lv_error_message1 lv_error_message2
                    lv_program_include
                    lv_program_line.

相反,我想創建一個類方法並傳遞任何引用任何錯誤的本地對象並顯示錯誤詳細信息:

CATCH cx_root INTO lcx_general_error.
  lo_fi_uploads->display_error( lcx_general_error ).  

如何在本地類中創建和使用該參數?

異常是具有常規對象實例的常規類,因此像任何其他對象參數一樣聲明它們:

METHODS display_error
  IMPORTING
    exception TYPE REF TO cx_root.

在方法的實現中,您可以粘貼已有的代碼:

METHOD display_error.

  DATA(lv_longtext) = exception->get_longtext( ).
  exception->get_source_position(
        IMPORTING
            program_name    = DATA(lv_program_name)
            include_name    = DATA(lv_include_name)
            source_line    = DATA(lv_program_line)
            ).
  DATA(lv_program_include) = |{ lv_program_name }/ { lv_include_name }|.
  DATA(lv_length_message) = strlen( lv_longtext ).
  DATA(lv_error_message1) = lv_longtext(50).
  IF lv_length_message > 50.
    DATA(lv_remaining) = lv_length_message - 50.
    DATA(lv_error_message2) = lv_longtext+50(lv_remaining).
  ENDIF.

  MESSAGE e001 WITH lv_error_message1 lv_error_message2
                lv_program_include
                lv_program_line.

ENDMETHOD.

人們經常擔心處理異常可能會意外觸發它們。 那不會發生。 只要您不調用 RAISE 語句,異常實際上就是非常普通的對象。 你甚至可以用 NEW 實例化它們而不觸發它們。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM