방법: 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 개체는 양식 개발자가 오류 정보에 액세스하는 데 사용할 수 있는 다음과 같은 속성을 제공합니다.
이름 |
설명 |
---|---|
ErrorObject 개체의 형식에 따라 오류 조건 이름을 가져오거나 null을 반환합니다. |
|
ErrorObject 개체의 자세한 오류 메시지를 가져오거나 설정합니다. |
|
ErrorCode 속성 |
ErrorObject 개체의 오류 코드를 가져오거나 설정합니다. |
Node 속성 |
ErrorObject 개체에 연결된 XML 노드에 대한 참조를 가져옵니다. |
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 오류 대화 상자에 처리되지 않은 예외에 대한 정보가 표시됩니다.