title: SOAP faults or results object?
body: <p>I was having a discussion about this with a co-worker and we couldn't come to an agreement, so I wanted to get your thoughts.  I have my own opinions on this, but I won't spoil it for you.</p>
  
  <p>When should I be returning a <strong>SOAP fault</strong> and when should I be returning a <strong>result object</strong> that has error information?  Assume this is for a generic web service that can be consumed by various systems (.NET, Java, whatever).  The result object would have an isError flag, an errorType (similar to specific exception type), and a message.</p>
  
  <p>Some points to consider:</p>
  
  <ol>
  <li>Is a data validation error a fault?</li>
  <li>Should there be a combination of faults (for very exceptional cases) and the results object (for "expected" errors)?</li>
  <li>How would you group SOAP faults (critical [null reference] vs validation [zip code incorrect])?</li>
  <li>Fail-fast vs having to remember to check for error</li>
  <li>Best practices, patterns, standards, etc.</li>
  </ol>
  
  <p>Links to articles are valid.  Even though it sounds like I want your opinion, <strong>please stick to facts</strong> (x is better because of y and z...)</p>