The FaultException can also includes a FaultCode, that is a string data you can use to pass additional information, so the client can be able to distinguish different exceptions:
try
{
// your service logic here
}
catch (Exception ex)
{
throw new FaultException("There was a problem processing your request",
new FaultCode(("01"));
}
Getting the FaultCode:
try
{
// call the service
}
catch (FaultException faultEx)
{
switch (faultEx.Code.Name)
{
case "01":
// do something
break;
case "02":
// do another something
break
}
}