Как обрабатывать или что делать, если в методе Dispose () есть исключение - PullRequest
0 голосов
/ 24 апреля 2020

Я не сталкивался с каким-либо Вопросом / Решением в Stackoverflow по этому вопросу, который набрал большое количество голосов.

Поэтому я подумал, что задам его снова здесь.

Как или что делать, если в Dispose () есть метод Exception ().

Должны ли мы записать это в журнал или, если я Rethrow the Exception, получит ли Rethrown. Я мог бы захотеть вернуть его в исходное состояние, чтобы я узнал, что где-то допустил ошибку в своем Dispose ()

Даже если мы предполагаем, что он действительно получит Rethrown, будет ли хорошей практикой возвращать его?

1 Ответ

0 голосов
/ 24 апреля 2020

В большинстве (но не во всех) случаях ваши обработчики исключений должны находиться в точке ввода кода.
Просто дайте исключению всплыть, как это.

public static class Program
{
  public static void Main()
  {
    try
    {
      using (new QuestionableCodeAtBest()) {}
    } 
    catch (Exception exception)
    {
      Console.WriteLine(exception);
    }
  }
}

class QuestionableCodeAtBest : IDisposable
{
  const int TotalHands = 2;

  public void Dispose()
  {    
    var handsThatAreClapping = 0;
    Console.WriteLine($"What is the sound of no hands clapping?: {TotalHands / handsThatAreClapping}");
  }
}

...