Exceptions or Result Types? - C#