We have standard here that when writing data repository methods, we need to include an out parameter to store errormessages instead of throwing it out directly. And if necessary throw them out in one go to allow users correcting data errors in single pass.
Well, it depends. I did say it's a flag. Error Message I can kind understand, if you're doing a Try type action, although even then I'd probably prefer a results struct with an error code and message in.