Почему не существует исключения NotImplementedException?



Это действительно, действительно раздражает меня, поэтому я надеюсь, что кто-то может дать мне разумное обоснование того, почему все так, как есть.



NotImplementedException. ты меня разыгрываешь, да?



Нет, я не собираюсь брать дешевый удар на это, говоря: "подождите, метод реализован - он бросает NotImplementedException."Да, это верно, вы должны реализовать метод, чтобы бросить NotImplementedException (в отличие от чистой виртуальной функции позвоните в C++ - теперь это имеет смысл!). Хотя это довольно забавно, есть более серьезная проблема в моем уме.



Мне просто интересно, в присутствии NotImplementedException, как кто-нибудь может сделать что-нибудь с .Net? вы должны обернуть каждый абстрактный вызов метода с помощью блока try catch, чтобы защитить от методов, которые могут быть не реализованы? Если вы поймаете такое исключение, что, черт возьми, вы должны с ним делать??



Я не вижу способа проверить, если метод фактически реализовано без вызова его. Поскольку вызов может иметь побочные эффекты, я не могу выполнить все свои проверки заранее, а затем запустить свой алгоритм. Я должен запустить свой алгоритм, поймать NotImplementedExceptions и некоторые, как откатить мое приложение до некоторого вменяемого состояния.



Это безумие. Безумный. Безумный. Поэтому возникает вопрос:почему NotImplementedException существует?



в качестве упреждающего удара я не хочу, чтобы кто-то ответил: "Потому что дизайнеры должны поместите это в автоматически сгенерированный код.- Это ужасно. Я бы предпочел, чтобы автоматически сгенерированный код не компилировался, пока вы не предоставите реализацию. Например, автоматически сгенерированная реализация может быть "throw NotImplementedException;" где NotImplementedException не определен!



кто-нибудь когда-нибудь ловил и обрабатывал NotImplementedException? Вы когда-нибудь оставляли NotImplementedException в своем коде? Если да, то это представляло собой бомбу замедленного действия (т. е. вы случайно оставили ее там), или недостаток дизайна (метод не должен быть реализован и никогда не будет вызван)?



Я тоже очень подозрительно отношусь к NotSupportedException... Не поддерживается? Что за? Если он не поддерживается, почему он является частью вашего интерфейса? Может ли кто-нибудь в Microsoft написать неправильное наследование? Но я мог бы начать другой вопрос для этого, если я не получу слишком много оскорблений для этого.



дополнительная информация:



этой интересно читать на предмет:.



кажется, есть сильное соглашение с Брэд Абрамс что " NotImplementedException предназначен для функциональности, которая просто еще не реализована, но действительно должна (и будет). Что-то вроде того, что вы старт когда вы строите класс, получить все методы там бросая NotImplementedException, а затем очистить их с реальным кодом..."



комментарии Джаред Парсонс очень слабы и должны вероятно, будет проигнорировано: NotImplementedException: бросьте это исключение, когда тип не реализует метод по какой-либо другой причине.



The MSDN еще слабее по этому вопросу, просто заявив, что " исключение, которое возникает, когда запрошенный метод или операция не реализованы."

648   0  

Comments

    Ничего не найдено.