What is a Fault Exception in WCF and why do we use it? This article explains the need for a Fault Exception.
Fault exception
It is used in a client application to catch contractually-specified SOAP faults. By the simple exception message, you can't identify the reason of the exception, that's why a Fault Exception is useful.
In this article I will:
- Create a WCF service application that has an operation contract for the division of 2 passed values by the client.
- Create a Console application and add a reference for the WCF service into it. Then access the method of the WCF service to do the division of passed values.
To understand it in details try the following example:
Step 1:
Step 2:
- Create the console application named "ClientApp" for the client.
- Right-click on the project and select "Add Service Reference".
Type the URL into the address TextBox that you have noted earlier then click on the Go button and click OK.
Note: You can also change the namespace like here "ServiceReference1" is the default.
You can see the reference has been added in your application successfully.
- Write the code that will accept the 2 integer values respectively at runtime from the user and then print the results after accessing the "Divison" method via an object of the WCF service.
int val1 = Convert.ToInt32(Console.ReadLine());
int val2 = Convert.ToInt32(Console.ReadLine());
ServiceReference1.Service1Client myClient = new ServiceReference1.Service1Client();
int result = myClient.Divison(val1, val2);
Console.WriteLine("Divison is = " + result);
Console.ReadKey();
I have entered 2 integer values, 6 and 3; that's why the division will be 6/3=2.
But if I will enter 6 and 0 then It will generate the exception and print the exception due to the try-catch block.
Question: How will the client know what the problem is that occured?
Solution: FaultException will tell the actual error so we need to write the FaultException in the WCF service named "Service1.svc.cs". The catch block will be like this:
throw new System.ServiceModel.FaultException(ex.Message);
And build the application.
Now we need to update the reference of the WCF service in the client application
Run the client application with 6 and 0 values as done above and see the exact exception or problem.