Y>> Y>> X DO NOT use exceptions for the normal flow of control, if possible. S> So... That's just the point - in a normal case operation transits also you ship the goods. And if to translate means it was not possible, it not a standard situation. S> here, even our local MVP, . On guidelines, recommends Exception: http://rsdn.org/forum/philosophy/6951261.1 the Author: gandjustas Date: 01.11 06:58 Generally ONLY an exception. It agree, exceptions are pleasant to me. But there are also special cases. S> It turns out is 2 camps? Camps can be even more, and the people can run across from camp in camp depending on a specific situation. Y>> variants See. Y>> 1) Y>> TransferValidationResult ValidateTransfer (int toAccount, decimal amount); Y>> long Transfer (int toAccount, decimal amount);//throws an exception at failure S> If there 0 you simply do not display the button "to translate means" in GUI. From display of the button before its pushing can transit hours. Therefore at operation fulfillment was usefully to recheck it. Y>> 2) Y>> bool TryTransfer (int toAccount, decimal amount, out TransferValidationResult transferValidationResult); S> here, never saw anything similar. Usually operation transits, after all before. Checks become always. If check becomes for an hour before operation it can become irrelevant. Besides, by operation with there can be surprises, even when all preliminary checks went right. Here it is important to look a specific situation.