문제

Biztalk 2006 R2 프로젝트 (ESB 지침과 함께 사용)가 있습니다 (ESB 지침 1) C# 코드의 정적 메소드로 오케스트레이션에서 정적 메소드로 호출하고 있습니다. 't 내부 클래스가 존재하지만 예외는 없지만 던지지 마십시오 (정적 방법에는 캐치 블록이 있고 오케스트레이션에는 예외의 실제 처리가 있습니다).

정적 방법은 다음과 같습니다.


public static XLANGMessage LoadFileIntoMessage(XLANGMessage message, string filePath,Encoding encoding)
        {
            try
            {
                IStreamFactory sf = new FileStreamFactory(filePath,encoding);

                message[0].LoadFrom(sf);
                return message;
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

파일 스트림을로드하는 클래스는 다음과 같습니다.


private class FileStreamFactory : IStreamFactory
        {
            string _fname;
            Encoding _encoding;

            public FileStreamFactory(string fname,Encoding encoding)
            {
                _fname = fname;
                _encoding = encoding;
            }

            public Stream CreateStream()
            {
                try
                {
                    StreamReader sr;
                    sr = new StreamReader
                    (
                        _fname,
                        _encoding
                    );

                    return sr.BaseStream;
                }
                catch (Exception ex)
                {
                    throw ex;
                }
            }
        }

나는 오케스트레이션에서 정적 방법을 호출하고 수업 후 오케스트레이션에서 예외를 포착 할 것으로 예상하고 방법이 가져옵니다.

도움이 되었습니까?

해결책

여기서 실제 질문이 무엇인지 잘 모르겠습니다 .... 오케스트레이션에서 예외를 포착하는 방법에 대해 이야기하고 있습니까? ESB 예외 처리 시스템으로 들어가는 방법은 무엇입니까?

오케스트레이션에서 예외를 처리하려면 스코프 모양 (예외를 던질 수있는 코드/모양을 넣는 위치)을 사용한 다음 예외 처리기를 추가해야합니다 (시도/캐치 블록과 같은).

ESB 물건은 여기를 참조하십시오. http://msdn.microsoft.com/en-us/library/ee250235(v=bts.10).aspx

마지막으로, 내가 말할 수있게 해주세요 : 이미 코드에서하고있는 것처럼 예외를 처리하지 마십시오. 다시 던지기 위해 예외를 포착해서는 안됩니다. 매우 열악한 프로그래밍 관행이며 성능을 상하게하며 예외의 원래 스택 추적을 잃어 버려 문제를 진단하고 해결하기가 더 어려워집니다. 보다 http://winterdom.com/2002/09/RethrowingExceptionSinc

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top