Все остальные объяснили, почему бросающие деструкторы ужасны..., что можно делать с этим? Если Вы делаете операцию, которая может перестать работать, создать отдельный открытый метод, который выполняет очистку и может выдать произвольные исключения. В большинстве случаев пользователи проигнорируют это. Если пользователи хотят контролировать успех/отказ очистки, они могут просто назвать явную стандартную программу очистки.
, Например:
class TempFile {
public:
TempFile(); // throws if the file couldn't be created
~TempFile() throw(); // does nothing if close() was already called; never throws
void close(); // throws if the file couldn't be deleted (e.g. file is open by another process)
// the rest of the class omitted...
};
Википедия использует Mono для поиска (также перечислено в компаниях, использующих страницу Mono )
Lunchwalla.com использует Mono для своего веб-сайта. Он получает довольно высокий трафик. Также есть небольшая запись в блоге о настройке - http://blog.lunchwalla.com/2010/04/23/the-tech-behind-lunchwalla/