PBDOM defines an exception class, PBDOM_EXCEPTION, derived from the standard PowerBuilder Exception class. The standard Text property of the Exception class can be used to obtain more detail on the nature of the exception being thrown. The class extends the PowerBuilder Exception class with one method, GetExceptionCode, that returns the unique code that identifies the exception being thrown.
For a list of exception codes, see the section called “PBDOM exceptions” in PowerBuilder Extension Reference or the section called “Handling PBDOM exceptions”.
PBDOM is a PowerBuilder extension, built using PBNI. The extension itself might throw a PBXRuntimeError exception. In the following example, the try-catch block checks first for a PBDOM exception, then for a PBXRuntimeError.
The example builds a PBDOM_DOCUMENT from a passed-in file name and uses a user-defined function called ProcessData to handle the DOM nodes. ProcessData could be a recursive function that extracts information from the DOM elements for further processing:
Long ll_ret
ll_ret = XMLParseFile(filename, ValNever!)
if ll_ret < 0 then return
PBDOM_Builder domBuilder
TRY
domBuilder = CREATE PBDOM_Builder
PBDOM_Document domDoc
PBDOM_Element root
domDoc = domBuilder.BuildFromFile( filename )
IF IsValid( domDoc ) THEN
IF domDoc.HasChildren() THEN
PBDOM_Object data[]
IF domDoc.GetContent( data ) THEN
Long ll_index, ll_count
ll_count = UpperBound( data )
FOR ll_index = 1 TO ll_count
ProcessData( data[ll_index], 0 )
NEXT
END IF
END IF
END IF
CATCH ( PBDOM_Exception pbde )
MessageBox( "PBDOM Exception", pbde.getMessage() )
CATCH ( PBXRuntimeError re )
MessageBox( "PBNI Exception", re.getMessage() )
END TRY


