Не могу понять до конца, для чего используют конструкции вида throw new NotImplementedException(), и чем throw, например в try-catch, отличается от throw new
Ответ
В .NET есть несколько "системных" исключений, которые существуют, чтобы сообщить о причине отсутствия метода, но которые не надо ловить:
NotImplementedException — метод не реализован, но будет реализован в будущем. Вариация на тему комментария TODO, которая приводит к падению при выполнении.
NotSupportedException — метод не реализован и никогда не будет реализован. Используется, если базовый класс или реализуемый интерфейс имеют широкий API, и от потомков не предполагается реализация всех методов (например, потому что какая-то возможность не поддерживается).
По умолчанию при реализации интерфейса IDE генерирует методы с throw new NotImplementedException(), предполагая, что вы реализуете их. Если вы не собираетесь этого делать (например, ваша коллекция релизует IList<>, но не поддерживает запись), то следует заменить этот код на throw new NotSupportedException("Foo is not supported due to...") с сообщением о причине отсутствия реализации (например, в случае коллекци только для чтения сообщение может быть "Коллекция только для чтения не может быть изменена.").
Если вы хотите проверить код в работе, и throw new NIE вам мешает, то можно заменить код на заглушку, например, return null; // TODO Implement Foo() method
Комментариев нет:
Отправить комментарий