diff --git a/abaplint.json b/abaplint.json
index 3d76aa9..5a128c6 100644
--- a/abaplint.json
+++ b/abaplint.json
@@ -36,7 +36,7 @@
"prefer_raise_exception_new": true,
"select_add_order_by": false,
"select_performance": false,
- "uncaught_exception": false,
+ "uncaught_exception": true,
"unsecure_fae": false,
"use_class_based_exceptions": false,
"call_transaction_authority_check": true,
diff --git a/src/zcl_excel_reader_huge_file.clas.abap b/src/zcl_excel_reader_huge_file.clas.abap
index 714402e..3c870a1 100644
--- a/src/zcl_excel_reader_huge_file.clas.abap
+++ b/src/zcl_excel_reader_huge_file.clas.abap
@@ -54,7 +54,8 @@ CLASS zcl_excel_reader_huge_file DEFINITION
RETURNING
VALUE(es_cell) TYPE t_cell
RAISING
- lcx_not_found .
+ lcx_not_found
+ zcx_excel.
METHODS read_shared_strings
IMPORTING
!io_reader TYPE REF TO if_sxml_reader
@@ -64,7 +65,9 @@ CLASS zcl_excel_reader_huge_file DEFINITION
IMPORTING
!iv_coord TYPE string
RETURNING
- VALUE(es_coord) TYPE t_cell_coord .
+ VALUE(es_coord) TYPE t_cell_coord
+ RAISING
+ zcx_excel.
METHODS put_cell_to_worksheet
IMPORTING
!io_worksheet TYPE REF TO zcl_excel_worksheet
diff --git a/src/zcl_excel_reader_huge_file.clas.testclasses.abap b/src/zcl_excel_reader_huge_file.clas.testclasses.abap
index d06f54a..9382026 100644
--- a/src/zcl_excel_reader_huge_file.clas.testclasses.abap
+++ b/src/zcl_excel_reader_huge_file.clas.testclasses.abap
@@ -40,18 +40,27 @@ CLASS lcl_test IMPLEMENTATION.
*
METHOD test_number.
- DATA lo_reader TYPE REF TO if_sxml_reader.
+ DATA: lo_reader TYPE REF TO if_sxml_reader,
+ lo_ex TYPE REF TO lcx_not_found,
+ lv_text TYPE string.
lo_reader = get_reader(
`17`
).
- out->read_worksheet_data( io_reader = lo_reader io_worksheet = worksheet ).
- assert_value_equals( `17` ).
- assert_datatype_equals( `n` ).
+ TRY.
+ out->read_worksheet_data( io_reader = lo_reader io_worksheet = worksheet ).
+ assert_value_equals( `17` ).
+ assert_datatype_equals( `n` ).
+ CATCH lcx_not_found INTO lo_ex.
+ lv_text = lo_ex->get_text( ). " >>> May inspect the message in the debugger
+ cl_abap_unit_assert=>fail( lv_text ).
+ ENDTRY.
ENDMETHOD. "test_shared_string
*
METHOD test_shared_string.
- DATA lo_reader TYPE REF TO if_sxml_reader.
+ DATA: lo_reader TYPE REF TO if_sxml_reader,
+ lo_ex TYPE REF TO lcx_not_found,
+ lv_text TYPE string.
DATA: ls_shared_string TYPE zcl_excel_reader_huge_file=>t_shared_string.
ls_shared_string-value = `Test1`.
APPEND ls_shared_string TO out->shared_strings.
@@ -60,13 +69,17 @@ CLASS lcl_test IMPLEMENTATION.
lo_reader = get_reader(
`1`
).
- out->read_worksheet_data( io_reader = lo_reader io_worksheet = worksheet ).
- assert_value_equals( `Test2` ).
- assert_datatype_equals( `s` ).
+ TRY.
+ out->read_worksheet_data( io_reader = lo_reader io_worksheet = worksheet ).
+ assert_value_equals( `Test2` ).
+ assert_datatype_equals( `s` ).
+ CATCH lcx_not_found INTO lo_ex.
+ lv_text = lo_ex->get_text( ). " >>> May inspect the message in the debugger
+ cl_abap_unit_assert=>fail( lv_text ).
+ ENDTRY.
ENDMETHOD. "test_shared_string
*
METHOD test_shared_string_missing.
-
DATA: lo_reader TYPE REF TO if_sxml_reader,
lo_ex TYPE REF TO lcx_not_found,
lv_text TYPE string.
@@ -87,43 +100,65 @@ CLASS lcl_test IMPLEMENTATION.
ENDMETHOD.
*
METHOD test_inline_string.
- DATA lo_reader TYPE REF TO if_sxml_reader.
+ DATA: lo_reader TYPE REF TO if_sxml_reader,
+ lo_ex TYPE REF TO lcx_not_found,
+ lv_text TYPE string.
lo_reader = get_reader(
`Alpha`
).
- out->read_worksheet_data( io_reader = lo_reader io_worksheet = worksheet ).
- assert_value_equals( `Alpha` ).
- assert_datatype_equals( `inlineStr` ).
+ TRY.
+ out->read_worksheet_data( io_reader = lo_reader io_worksheet = worksheet ).
+ assert_value_equals( `Alpha` ).
+ assert_datatype_equals( `inlineStr` ).
+ CATCH lcx_not_found INTO lo_ex.
+ lv_text = lo_ex->get_text( ). " >>> May inspect the message in the debugger
+ cl_abap_unit_assert=>fail( lv_text ).
+ ENDTRY.
ENDMETHOD. "test_inline_string
*
METHOD test_boolean.
- DATA lo_reader TYPE REF TO if_sxml_reader.
+ DATA: lo_reader TYPE REF TO if_sxml_reader,
+ lo_ex TYPE REF TO lcx_not_found,
+ lv_text TYPE string.
lo_reader = get_reader(
`1`
).
- out->read_worksheet_data( io_reader = lo_reader io_worksheet = worksheet ).
- assert_value_equals( `1` ).
- assert_datatype_equals( `b` ).
+ TRY.
+ out->read_worksheet_data( io_reader = lo_reader io_worksheet = worksheet ).
+ assert_value_equals( `1` ).
+ assert_datatype_equals( `b` ).
+ CATCH lcx_not_found INTO lo_ex.
+ lv_text = lo_ex->get_text( ). " >>> May inspect the message in the debugger
+ cl_abap_unit_assert=>fail( lv_text ).
+ ENDTRY.
ENDMETHOD. "test_boolean
*
METHOD test_formula.
- DATA lo_reader TYPE REF TO if_sxml_reader.
+ DATA: lo_reader TYPE REF TO if_sxml_reader,
+ lo_ex TYPE REF TO lcx_not_found,
+ lv_text TYPE string.
lo_reader = get_reader(
`A2*A2`
).
- out->read_worksheet_data( io_reader = lo_reader io_worksheet = worksheet ).
- assert_formula_equals( `A2*A2` ).
- assert_datatype_equals( `n` ).
+ TRY.
+ out->read_worksheet_data( io_reader = lo_reader io_worksheet = worksheet ).
+ assert_formula_equals( `A2*A2` ).
+ assert_datatype_equals( `n` ).
+ CATCH lcx_not_found INTO lo_ex.
+ lv_text = lo_ex->get_text( ). " >>> May inspect the message in the debugger
+ cl_abap_unit_assert=>fail( lv_text ).
+ ENDTRY.
ENDMETHOD. "test_formula
*
METHOD test_empty_cells.
* There is no need to store an empty cell in the ABAP worksheet structure
-
- DATA: lo_reader TYPE REF TO if_sxml_reader.
+ DATA: lo_reader TYPE REF TO if_sxml_reader,
+ lo_ex TYPE REF TO lcx_not_found,
+ lv_text TYPE string.
DATA: ls_shared_string TYPE zcl_excel_reader_huge_file=>t_shared_string.
ls_shared_string-value = ``.
APPEND ls_shared_string TO out->shared_strings.
@@ -135,20 +170,25 @@ CLASS lcl_test IMPLEMENTATION.
`1`
).
- out->read_worksheet_data( io_reader = lo_reader io_worksheet = worksheet ).
-
- assert_value_equals( iv_row = 1 iv_col = 1 iv_value = `` ).
- assert_value_equals( iv_row = 2 iv_col = 1 iv_value = `` ).
- assert_value_equals( iv_row = 3 iv_col = 1 iv_value = `t` ).
+ TRY.
+ out->read_worksheet_data( io_reader = lo_reader io_worksheet = worksheet ).
+ assert_value_equals( iv_row = 1 iv_col = 1 iv_value = `` ).
+ assert_value_equals( iv_row = 2 iv_col = 1 iv_value = `` ).
+ assert_value_equals( iv_row = 3 iv_col = 1 iv_value = `t` ).
+ CATCH lcx_not_found INTO lo_ex.
+ lv_text = lo_ex->get_text( ). " >>> May inspect the message in the debugger
+ cl_abap_unit_assert=>fail( lv_text ).
+ ENDTRY.
ENDMETHOD.
*
METHOD test_style.
- DATA:
- lo_reader TYPE REF TO if_sxml_reader,
- lo_style TYPE REF TO zcl_excel_style,
- lv_guid TYPE zexcel_cell_style.
+ DATA: lo_reader TYPE REF TO if_sxml_reader,
+ lo_ex TYPE REF TO lcx_not_found,
+ lv_text TYPE string,
+ lo_style TYPE REF TO zcl_excel_style,
+ lv_guid TYPE zexcel_cell_style.
CREATE OBJECT lo_style.
APPEND lo_style TO out->styles.
lv_guid = lo_style->get_guid( ).
@@ -156,9 +196,13 @@ CLASS lcl_test IMPLEMENTATION.
lo_reader = get_reader(
`18`
).
- out->read_worksheet_data( io_reader = lo_reader io_worksheet = worksheet ).
-
- assert_style_equals( lv_guid ).
+ TRY.
+ out->read_worksheet_data( io_reader = lo_reader io_worksheet = worksheet ).
+ assert_style_equals( lv_guid ).
+ CATCH lcx_not_found INTO lo_ex.
+ lv_text = lo_ex->get_text( ). " >>> May inspect the message in the debugger
+ cl_abap_unit_assert=>fail( lv_text ).
+ ENDTRY.
ENDMETHOD. "test_style