SOAP Exceptions


Catching Errors in ECGridOS™

As in all good programming, trapping error situations is key to a great user experience. ECGridOS makes extensive use of SOAP Exceptions to help the developer along when problems occur.

There are two types of SOAP errors that can by thrown by ECGridOS. The first is by the Framework itself, primarily syntactic, and the second is by the ECGridOS system, syntactic and semantic.

Framework Exceptions


The most common Framework Exception is for missing parameters, as with web services all parameters are required. Additionally, an exception generated due to internal server errors will likely throw a Framework Exception.

ECGridOS Exceptions

When ECGridOS throws an exception, it creates a specifically formatted <detail></detail> node that is included in the SOAP Exception.

details XML Node

<details>
  <ErrorCode>8</ErrorCode>
  <ErrorString>Invalid data length.</ErrorString>
  <ErrorItem>Description</ErrorItem>
  <ErrorMessage>Too Integer (max=35)</ErrorMessage>
</details>

By parsing out the details node, you can determine programmatically what happened and make corrective actions. The various ECGridOS Error Codes are listed at the bottom of this section.

The system will detect and report the attempt to create duplicate IDs, redundant Interconnect Requests, unauthorized access and a host of data errors.

The following code snippet shows how to catch and parse SOAP Exceptions in Visual Basic.

Visual Basic

Imports System.Xml

Class ErrorInfo
    Public ErrorCode As Short
    Public ErrorString As String
    Public ErrorItem As String
    Public ErrorMessage As String
End
Class

Private Sub SomeFunction()
    Dim
errInfo As ErrorInfo
    Try
        Dim parcels() As net.ecgridos.ParcelIDInfo = _
         ecgridos.ParcelInBoxArchiveEx(SessionID, _
                                       NetworkID, _
                                       MailboxID, _
                                       BeginDate, _
                                       EndDate, _
                                       ECGridID1, _
                                       ECGridID2, _
                                       Status)
        [...]
    Catch ex As SoapException
        errInfo = CatchException(ex)
        [...]
    End Try
    [...]
End Sub

Private Function CatchException(ByVal ex As SoapException) As ErrorInfo
    Dim doc As New XmlDocument
    Dim Node As XmlNode
    CatchException =
New ErrorInfo
    doc.LoadXml(ex.Detail.OuterXml)
    Node = doc.DocumentElement.SelectSingleNode(
"ErrorInfo")
    If Node Is Nothing Then
        'This picks up Framework generated SOAP Exceptions
        With CatchException
            .ErrorCode = -1
            .ErrorString = ex.Message
            .ErrorItem =
""
            .ErrorMessage = ""
        End With
    Else
        'This picks up ECGridOS generated SOAP Exceptions
        With
CatchException
            .ErrorCode =
CInt(Node.SelectSingleNode("ErrorCode").InnerText)
            .ErrorString = Node.SelectSingleNode(
"ErrorString").InnerText
            .ErrorItem = Node.SelectSingleNode(
"ErrorItem").InnerText
            .ErrorMessage = Node.SelectSingleNode(
"ErrorMessage").InnerText
        End With
    End If
End Function

ECGridOS Error Codes

1 Session timeout
2 Access denied
3 Not found
4 Invalid ID
5 Duplicate ID
6 ID exists on network
7 Invalid data type
8 Invalid data length
9 Data error
10 SQL Error


© 2008-2011, Loren Data Corp.
All rights reserved.
ECGrid is a registered service mark of Loren Data Corp.
ECGridOS is a service mark of Loren Data Corp.