Нет ничего плохого в следующем шаблоне:
try
{
// Do Something
}
catch (GeneralException ex)
{
throw new SpecificException(
String.Format("More specifics ({0}) in message", someData),
moreContext,
new {even, more, context},
ex);
}
Это именно тот шаблон, который нужно использовать, например, когда «Делай что-то», скажем, для открытия какого-либо файла. «SpecificException» может быть «не могу прочитать файл конфигурации».