Конечно, возможны разные варианты. Например, можно обойтись вообще без генерации исключений. Например, предположим, что вызывающая программа ничего не знает (да и не должна знать) о классе ComponentInfo. Она его просто делегирует другому классу, который и производит различные манипуляции с этим объектом. Конечно, в этом случае генерация исключения в приведенном примере нам не подходит. Вот небольшой модифицированный примерчик этого:
public ComponentInfo GetComponentInfo(string id)
{
ComponentInfo info = new ComponentInfo();
try
{
//собираем этот объект разными способами
//с возможной генерацией исключения
}
catch(ContractException ex)
{
//обеспечиваем возвращение валидного объекта
info.Name = «Не известно»;
info.Description = «Искомая деталь не найдена»;
info.Price = 0;
}
return info;
}* This source code was highlighted with Source Code Highlighter.
пытался сделать пример нагляднее