What is a Fault Exception in WCF and why do we use it? This article explains the need for a Fault Exception.
Fault exception in WCF
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
- Create a WCF Service Application named "FaultException".

- Write an operation contract in the interface of the default file named "IService1.cs".
- [OperationContract]
- int Divison(int val1, int val2);

- Write the following code in "Service1.svc.cs" for implementation of an operation contract for the division of 2 values with a try and catch block.
- public int Divison(int val1, int val2)
- {
- try
- {
- return val1 / val2;
- }
- catch (Exception ex)
- {
- throw ex; // throw the exception if raises
- }
- }

- Run the WCF service and note down the URL like "http://localhost:3857/Service1.svc" somewhere.

- 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.

Khushboo ModiPosted Feb 18, 2017, 2:01 AM
NOt able to handle fault exception why ?Try { string uri = "http://localhost:62598/Service1.svc/Divide"; HttpWebRequest request = WebRequest.Create(uri) as HttpWebRequest; request.Method = "GET"; using (WebResponse responce = request.GetResponse()) { } } catch (FaultException<string> ex) { apiResponce = ex.Message.ToString(); }