Предположим, у меня есть класс, подобный приведенному ниже:
public class DisposableClass : IDisposable()
{
private readonly Timer timer;
DisposableClass()
{
this.timer = new Timer(s => cb(s), s, 1000, 1000);
}
Init()
{
try
{
// Do some initialization here that is not done in ctor.
}
catch (Exception)
{
// Log error.
throw;
}
finally
{
// Is this correct?
this.Dispose();
}
}
public void Dispose()
{
this.timer?.Dispose();
}
}
Мой вопрос заключается в том, является ли условие finally
необходимым (или не должно быть вообще) в вышеприведенном случае для любого неконструктивного метода при создании необработанного исключения. Спасибо.
EDIT:
В ответе, пожалуйста, решайте вопросы в зависимости от Init()
, являющихся public
, protected
, private
уровнями видимости.