SAP

SAP ABAP TRY~CATCH 덤프 방지

selectall 2026. 2. 12. 18:00

TRY~CATCH 구문 

: 오류가 발생 할시, 프로그램이 에러로 뻗지 않게 잡아주는 안전장치

  • 쉽게 말해, 에러 날 것 같은 코드를 TRY 안에 넣고, 에러 나면 CATCH에서 잡아서 처리

✅ TRY

: 에러 발생 가능성 있는 코드 작성 구간

  • DB 접근, 클래스 메소드 호출, 파일처리, 계산 등

✅ CATCH

: 발생한 예외 클래스(Exception Class) 를 잡는 부분

예외 클래스 의미
cx_sy_zerodivide 0으로 나누기
cx_sy_itab_line_not_found READ TABLE 실패
cx_sy_conversion_error 형변환 실패
cx_root 모든 예외의 부모 (최후 방어막)
  • CATCH ~ INTO (변수). GET_TEXT ( ).

: 예외 클래스에서 후에는 예외로 나온 메세지 변수에 담아준다.

 

  • CATCH ~ INTO (변수). GET_LONGTEXT ( ).

: 예외 클래스에서 후에는 예외로 나온 상세 메세지 변수에 담아준다.

 

✅ CLEARUP

: EXCEPTION 발생한 구문에 대한 변수 값을 CLEAR 처리

 


 

 사용 예시

 

  • INPUT 값이 10 으로 나뉘어지는지 결과보기 
PARAMETERS: PV_INPUT TYPE I.

DATA: LV_RESULT TYPE P LENGTH 10,
      LV_TEXT   TYPE STRING,
      LV_LTEXT  TYPE STRING.

 

  • TRY ~ CATCH 구문
TRY.
    " 에러 발생 가능 구간
    LV_RESULT = 10 / PV_INPUT.

  CATCH CX_SY_ZERODIVIDE INTO DATA(LX_ZERO).    " 나누기
    LV_TEXT  = LX_ZERO->GET_TEXT( ).
    LV_LTEXT = LX_ZERO->GET_LONGTEXT( ).

  CATCH CX_SY_CONVERSION_NO_NUMBER INTO DATA(LX_CONV).  " CHAR 변환
    LV_TEXT  = LX_CONV->GET_TEXT( ).
    LV_LTEXT = LX_CONV->GET_LONGTEXT( ).

  CATCH CX_ROOT INTO DATA(LX_ROOT).    " 그외
    LV_TEXT  = LX_ROOT->GET_TEXT( ).
    LV_LTEXT = LX_ROOT->GET_LONGTEXT( ).

ENDTRY.

WRITE: / 'GET_TEXT 결과: ', LV_TEXT.
WRITE: / 'GET_LONGTEXT 결과: ', LV_LTEXT.

 

TEST

  •  1 입력 시, CATCH 잡히는 것 없기에. 공백 

  • TEST: 0 입력 시, CATCH CX_SY_ZERODIVIDE 걸림 

- 끝