Adding error handling to the service
In the previous sections, when we were trying to retrieve a product but the product ID passed in was not a valid one, we just threw an exception. Exceptions are technology-specific and therefore are not suitable for crossing the service boundary of SOA-compliant services. All exceptions generate a fault on the communication channel, resulting in unhappy proxies, as a recover and retry is not possible. Thus, for WCF services, we should not throw normal exceptions.
What we need are SOAP faults that meet industry standards for seamless interoperability.
In the service interface layer operations that may throw FaultExceptions
must be decorated with one or more FaultContract
attributes, defining the exact FaultException
.
On the other hand, the service consumer should catch specific FaultExceptions
to be in a position to handle the specified exceptions.
Adding a fault contract
We will now change the exception in the GetProduct
operation to a FaultContract
.
Before...