Question

Take the following try-catch statement in a WCF-Service

    Try
        'Here some method is being called.
        Return myBs.PerformDailyUpdate()

    Catch ex As Exception 'Exception is not being caught here
        If service IsNot Nothing AndAlso service.HasWarnings Then
            TextFileTracer.Write(String.Format("Warning in method: '{0}'.", name))
            TextFileTracer.Write(service.GetWarnings)
        End If
        Try
            TextFileTracer.Write("Error in dbmanager: " & service.HasErrors.ToString)
        Catch ex2 As Exception
        End Try
        TextFileTracer.Write(String.Format("Error in method: '{0}'.", name))
        TextFileTracer.Write(ex.Message & vbCrLf & ex.StackTrace)
    End Try
End Function 'Exception shows here while debugging

In that method (PerformDailyUpdate) an ASMX-Webservice (.Net 2.0) is being called. This webservice throws occassionaly an SOAPException caused from a method being called from that webservice.yet somehow this SOAPException is nog being caught by the method above.

My Question: Why isn't the SOAPException being Caught? Are there some characteristics that seperates a SOAP-Exception from normal 'exceptions' generated (that in turn cause it not be caught)?

Note: The code written here is not mine. So Please don't judge me on it

ExceptionMessage (First part)

  System.Web.Services.Protocols.SoapException: Unexpected application error: SqlException.
  ADF.ExceptionHandling.GlobalExceptions.UnexpectedException: Unexpected application error: SqlException.
  System.Data.SqlClient.SqlException: Incorrect syntax near ')'.
  at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection)
  at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection)
  ....

Thanks

Scheme (how this clarifies the situation somewhat):

Internal DailyTriggerMechanism  -----> WCF - Service  ----->  ASMX-Webservice        ----> DB2/SQL
                                     (Origin code above)    (Exception being thrown)

Inside the WCF-Service the data recieved is being manipulated to fill specific tables. The AMSX-Webservice may not change in this situation.

Was it helpful?

Solution

I think a normal exception should be able to catch that unhandled error you're listed, but you might try a SOAP-specific, and/or SQL-related exception, in addition to your regular exception.

Like:

try {
    //your failing code
} 
catch (SOAPException se) 
{
   //your response    }
catch (SQLException sqle) 
{
   //your response     
}
catch (Exception e) 
{
   //your response     
}
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top