Создаем портфолио за 1 месяц
К концу месяца: 4 классных проекта в вашем портфолио! Стоимость: 100$. Подробности...
953 of 1492 menu
◀ ▶

ObjectDisposedException

ObjectDisposedException бросают после Dispose или DisposeAsync. Первый аргумент конструктора - имя объекта (objectName), а не произвольный текст сообщения. Удобная проверка - ThrowIf.

Синтаксис

throw new ObjectDisposedException(objectName);

Пример

Давайте бросим исключение с именем "Door" и выведем ObjectName:

using System; class Program { static void Main() { try { throw new ObjectDisposedException("Door"); } catch (ObjectDisposedException ex) { Console.WriteLine(ex.ObjectName); } } }

Результат выполнения кода:

"Door"

Пример

Давайте поймаем исключение после имитации закрытого ресурса:

using System; class Door : IDisposable { private bool closed; public void Dispose() { closed = true; } public void Use() { if (closed) { throw new ObjectDisposedException("Door"); } } } class Program { static void Main() { var door = new Door(); door.Dispose(); try { door.Use(); } catch (ObjectDisposedException ex) { Console.WriteLine(ex.ObjectName); } } }

Результат выполнения кода:

"Door"

Пример

Давайте обработаем исключение через catch и напечатаем маркер:

using System; class Program { static void Main() { try { throw new ObjectDisposedException("Door"); } catch (ObjectDisposedException) { Console.WriteLine("closed"); } } }

Результат выполнения кода:

"closed"

Смотрите также

  • метод ThrowIf,
    который бросает при выполненном условии
  • InvalidOperationException,
    когда мешает состояние, а не Dispose
  • блок catch,
    которым ловят исключение
  • ArgumentOutOfRangeException,
    где имя объекта задают иначе
← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить