13.Exception 처리

Edit

이 장에서는 X-UP에서 발생하는 Exception에 대한 처리 방법과 Nexacro 어플리케이션의 Callback에서 처리할 수 있는 ErrorCode, ErrorMsg를 처리하는 방법에 대해 알아봅니다.

13.1Exception 처리 방법

Legacy, X-UP Model의 Logic class 그리고 X-UP Engine 등 에서 Exception이 발생했을 경우에 Exception 처리 방법에 대해 기술합니다.

그림 13-1일반적인 SAP RFC 모델

위와 같은 모델에서 SAP RFC Invoke에서 Exception이 발생한 경우 다음과 형태로 처리할 수 있습니다.

13.1.1Exception 발생 시 ErrorCode, ErrorMsg 전달

SAP RFC Invoke에서 오류가 발생했으며 전달된 Exception을 Throw 하여 이후 Logic을 수행하지 않습니다. 하지만 error code는 -1 이 아닌 임의의 error code를 전달하고자 하는 경우 입니다. 
이 경우 SAP RFC Invoke의 Exception tab을 통해 아래와 같이 coding을 수행함으로써 error code를 전달할 수 있습니다.

if(e instanceof AutomationFailException) {
    AutomationFailException exception = (AutomationFailException) e;
    exception.setErrorCode(-9999);
    throw exception;
} else {
    AutomationFailException exception = new AutomationFailException(e.getMessage(), e);
    exception.setErrorCode(-9999);
    throw exception;
}

13.1.2Exception 발생 시 무시

아래와 같은 경우에는 InvokeSkip Exception을 생성하여 throw해 처리합니다.

InvokeSkip invokeSkipException = new InvokeSkip(e.getMessage(), e);
throw invokeSkipException;

또한, ErrorCode와 ErrorMsg를 UI에 출력하기 위해서는 다음과 같이 처리할 수 있습니다.

globalParameterSet.getParameter("ErrorCode").setValue(new Integer(-999));
globalParameterSet.getParameter("ErrorMsg").setValue("consumption data failed.");
InvokeSkip invokeSkipException = new InvokeSkip(e.getMessage(), e);

throw invokeSkipException;

13.1.3Exception 발생 시 Throw

Invoke에서 Exception이 발생 하였을 경우 더 이상 모델의 Logic을 수행하지 않고 오류를 바로 출력할 경우 특별한 처리는 필요없습니다.

13.2ErrorCode, ErrorMsg 처리 방법

Nexacro 어플리케이션의 Callback Function에서 ErrorCode 및 ErrorMsg를 처리하기 위해 X-UP에서 처리하는 방법에 대해 설명합니다.

13.2.1ErrorCode, ErrorMsg를 처리하지 않을 경우

개발자가 별도로 처리 하지 않을 경우 X-UP은 다음과 같이 처리합니다.

13.2.2ErrorCode, ErrorMsg 처리 방법

Model의 Logic 상에서 ErrorCode, ErrorMsg를 다음과 같이 처리합니다.

  1. Model 내에서 ErrorCode, ErrorMsg 이름의 Variable 생성

  1. UserMethod 혹은 Exception 처리 부분에서 원하는 ErrorCode 값과 ErrorMsg값을 Variable에 설정

globalParameterSet.getParameter("ErrorCode").setValue(new Integer(-999));
globalParameterSet.getParameter("ErrorMsg").setValue("consumption data failed.");

13.3Modify Invoke의 추가적인 Exception 처리

Modify Invoke의 경우 Exception이 발생하였을 경우 추가적인 예외 처리를 할 수 있습니다.

다음은 RowSkip에 대한 예입니다.

throw new RowSkip("ignore exception", e);

위의 그림 중 onExceptionOccured(ParameterSet globalParameterSet, Throwable e, InvokingErrorInfo errInfo) 메서드는 Invoke 실행 중 예외가 발생했을 경우 호출되는 메서드입니다.

해당 메서드의 매개변수(parameter)에 대한 설명입니다.