По моему программистскому опыту, я смешивал обработку ошибок всеми возможными способами... Я создал свой личный стиль.
Тем не менее, я хотел бы услышать, что вы считаете плюсами и минусами обработки ошибок в начале и в конце метода.
Обработка в начале:
public String GenerateSomeStringData(String data, int value)
{
if (data == null)
throw new ArgumentNullException("data");
if (value <= 0)
throw new ArgumentException("value must be greater than zero");
int dataValue;
if (!int.TryParse(data, out dataValue))
throw new InvalidOperationException("data does not contain an integer");
return dataValue * 4 + value / 12;
}
Обработка в конце: (тот же пример)
public String GenerateSomeStringData(String data, int value)
{
if (data != null)
{
if (value > 0)
{
int dataValue;
if (int.TryParse(data, out dataValue))
{
return dataValue * 4 + value / 12;
}
else
throw new InvalidOperationException("data does not contain an integer");
}
else
throw new ArgumentException("value must be greater than zero");
}
else
throw new ArgumentNullException("data");
}
Какие критерии вы используете, когда решаете, как подойти к этому? Удобочитаемость, ремонтопригодность, краткость?