Почему не существует исключения NotImplementedException?
Это действительно, действительно раздражает меня, поэтому я надеюсь, что кто-то может дать мне разумное обоснование того, почему все так, как есть.
NotImplementedException. ты меня разыгрываешь, да?
Нет, я не собираюсь брать дешевый удар на это, говоря: "подождите, метод реализован - он бросает NotImplementedException."Да, это верно, вы должны реализовать метод, чтобы бросить NotImplementedException (в отличие от чистой виртуальной функции позвоните в C++ - теперь это имеет смысл!). Хотя это довольно забавно, есть более серьезная проблема в моем уме.
Мне просто интересно, в присутствии NotImplementedException, как кто-нибудь может сделать что-нибудь с .Net? вы должны обернуть каждый абстрактный вызов метода с помощью блока try catch, чтобы защитить от методов, которые могут быть не реализованы? Если вы поймаете такое исключение, что, черт возьми, вы должны с ним делать??
Я не вижу способа проверить, если метод фактически реализовано без вызова его. Поскольку вызов может иметь побочные эффекты, я не могу выполнить все свои проверки заранее, а затем запустить свой алгоритм. Я должен запустить свой алгоритм, поймать NotImplementedExceptions и некоторые, как откатить мое приложение до некоторого вменяемого состояния.
Это безумие. Безумный. Безумный. Поэтому возникает вопрос:почему NotImplementedException существует?
в качестве упреждающего удара я не хочу, чтобы кто-то ответил: "Потому что дизайнеры должны поместите это в автоматически сгенерированный код.- Это ужасно. Я бы предпочел, чтобы автоматически сгенерированный код не компилировался, пока вы не предоставите реализацию. Например, автоматически сгенерированная реализация может быть "throw NotImplementedException;" где NotImplementedException не определен!
кто-нибудь когда-нибудь ловил и обрабатывал NotImplementedException? Вы когда-нибудь оставляли NotImplementedException в своем коде? Если да, то это представляло собой бомбу замедленного действия (т. е. вы случайно оставили ее там), или недостаток дизайна (метод не должен быть реализован и никогда не будет вызван)?
Я тоже очень подозрительно отношусь к NotSupportedException... Не поддерживается? Что за? Если он не поддерживается, почему он является частью вашего интерфейса? Может ли кто-нибудь в Microsoft написать неправильное наследование? Но я мог бы начать другой вопрос для этого, если я не получу слишком много оскорблений для этого.
дополнительная информация:
этой интересно читать на предмет:.
кажется, есть сильное соглашение с Брэд Абрамс что " NotImplementedException предназначен для функциональности, которая просто еще не реализована, но действительно должна (и будет). Что-то вроде того, что вы старт когда вы строите класс, получить все методы там бросая NotImplementedException, а затем очистить их с реальным кодом..."
комментарии Джаред Парсонс очень слабы и должны вероятно, будет проигнорировано: NotImplementedException: бросьте это исключение, когда тип не реализует метод по какой-либо другой причине.
The MSDN еще слабее по этому вопросу, просто заявив, что " исключение, которое возникает, когда запрошенный метод или операция не реализованы."
Comments