다음을 통해 공유


방법: InfoPath 2003 개체 모델을 사용하여 오류 처리

개발자는 사용자 지정 응용 프로그램을 만들 때 응용 프로그램에서 발생한 오류를 확인하거나 사용자 지정 오류를 만들고 발생시키는 프로그래밍 코드를 작성하여 오류 처리를 실행해야 합니다. InfoPath 2003 호환 개체 모델을 사용하면 ErrorsCollection 컬렉션과 함께 ErrorObject 개체를 사용하여 오류를 처리할 수 있습니다.

InfoPath에서는 양식에 입력한 데이터가 XML 스키마의 유효성 검사에 실패하거나, 사용자 지정 유효성 검사 제약 조건이 잘못되거나, DataDOMEventObject 개체의 ReportError 메서드에 의해 오류가 생성될 때 또는 ErrorsCollection 컬렉션의 Add 메서드를 사용하여 오류를 만들 때 오류가 발생할 수 있습니다.

ErrorsCollection 컬렉션 개요

ErrorsCollection 컬렉션은 양식 개발자가 컬렉션에 포함된 ErrorObject 개체를 관리하는 데 사용할 수 있는 다음과 같은 메서드와 속성을 제공합니다.

이름

설명

Add 메서드

ErrorObject 개체를 만들어 컬렉션에 추가합니다.

Delete 메서드

ReportError 메서드를 사용하여 추가한 사용자 지정 오류를 제외하고 지정한 XML 노드 및 조건 이름과 연결된 모든 ErrorObject 개체를 삭제합니다.

DeleteAll 메서드

컬렉션에 포함된 모든 ErrorObject 개체를 삭제합니다.

Count 속성

컬렉션에 포함된 ErrorObject 개체의 수를 가져옵니다.

Item 속성

지정된 인덱스 번호를 기초로 ErrorObject 개체에 대한 참조를 가져옵니다.

ErrorObject 개체 개요

ErrorObject 개체는 양식 개발자가 오류 정보에 액세스하는 데 사용할 수 있는 다음과 같은 속성을 제공합니다.

이름

설명

ConditionName 속성

ErrorObject 개체의 형식에 따라 오류 조건 이름을 가져오거나 null을 반환합니다.

DetailedErrorMessage 속성

ErrorObject 개체의 자세한 오류 메시지를 가져오거나 설정합니다.

ErrorCode 속성

ErrorObject 개체의 오류 코드를 가져오거나 설정합니다.

Node 속성

ErrorObject 개체에 연결된 XML 노드에 대한 참조를 가져옵니다.

ShortErrorMessage 속성

ErrorObject 개체의 간단한 오류 메시지를 가져오거나 설정합니다.

ErrorType 속성

ErrorObject 개체의 형식을 가져옵니다.

ErrorsCollection 및 ErrorObject 사용

ErrorsCollection 컬렉션은 XDocument 개체의 Errors 속성을 통해 액세스합니다. ErrorsCollection 컬렉션은 양식의 원본으로 사용하는 XML 문서에서 오류가 발생하도록 이 XML 문서와 연결되어 있습니다. 다음 예제에서는 Visual C# foreach 루프를 사용하여 양식의 원본으로 사용하는 XML 문서에서 오류를 확인할 수 있는 방법을 보여 줍니다. 이때 오류가 있으면 각 오류에 대해 함수가 반복되고 ErrorObject 개체의 ShortErrorMessage 속성을 사용하여 메시지 상자가 표시됩니다.

public void CheckErrors(IXMLDOMNode xmlNode)
{
   foreach(ErrorObject err in thisXDocument.Errors)
   {
      if(xmlNode==err.Node)
         thisXDocument.UI.Alert("The following error has occured: "
             + err.ShortErrorMessage + ".");
   }
}

앞에 나온 함수는 양식의 데이터 유효성 검사 이벤트 처리기 중 하나에서 호출될 수 있습니다. 예를 들어 양식의 필드에 대한 OnAfterChange 이벤트 처리기에서 이 함수를 호출하면 다음과 같이 DataDOMEventObject 개체의 Site 속성을 사용하여 XML 노드 인수가 전달됩니다.

CheckErrors(e.Site);

개발자는 InfoPath에서 생성한 오류를 처리하는 것은 물론, DataDOMEventObject 개체의 ReportError 메서드나 ErrorsCollection 컬렉션의 Add 메서드를 사용하여 고유한 사용자 지정 오류를 생성할 수 있습니다. ReportError 또는 Add 메서드 사용에 대한 자세한 내용은 이 항목 맨 앞에 표시된 메서드를 클릭하십시오.

관리 코드 예외 처리

다음 코드 예제와 같이 try-catch 예외 처리를 사용하여 관리 코드 양식 서식 파일에서 발생한 예외를 처리할 수 있습니다.

DataAdapters dataAdapters;
dataAdapters = thisXDocument.DataAdapters; 
XMLFileAdapterObject queryXMLFile = 
   (XMLFileAdapterObject)dataAdapters["form1"];
// Perform the query.
try
{
   queryXMLFile.Query();
}

catch (Exception ex)
{
   thisXDocument.UI.Alert("Failed to query.\n\n" + ex.Message);
}

// Perform the submit.
try
{
   queryXMLFile.Submit();
}

catch (Exception ex)
{
   thisXDocument.UI.Alert("Failed to submit.\n\n" + ex.Message);
}

양식 코드에서 try-catch 예외 처리를 사용하지 않으면 디버깅하고 미리 보는 동안 InfoPath 오류 대화 상자에 처리되지 않은 예외에 대한 정보가 표시됩니다.