Для чего нужен throw new NotImplementedException()
1,00
р.
р.
Не могу понять до конца, для чего используют конструкции вида 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.