Ваш код не вызывает сборщик мусора - он просто подавляет финализатор, что важно, только если у вашего класса есть финализатор, что довольно маловероятно.
Справедливо зарегистрировать исключение, но в настоящее время вы просто ловите его , что означает, что конструктор вернется без ошибок. Это почти наверняка не очень хорошая идея. Я полагаю, вы, вероятно, хотите:
try
{
//do stuff...
} catch(Exception e) {
//do stuff, save logfile
throw;
}
Сказав это, я, как правило, все равно пытался бы централизовать обработку исключений, поместив ее далеко в стек вызовов и разместив там все журналы. Было бы довольно редко помещать регистрацию в конструкторе IMO.
Если вы не опубликовали ссылку this
в своем конструкторе, вновь созданный объект все равно будет иметь право на сборку мусора - вам больше ничего не нужно делать. Если вы реализуете IDisposable
в своем классе, вы должны быть осторожны, чтобы высвободить любые ресурсы, которые вам уже требуются в конструкторе, но в большинстве случаев вы можете просто позволить всплыть исключению.