Java сыграла огромную роль в обучении миллионов программистов обработке ошибок, надо отдать ей должное. И идея была красивая, что каждый метод будет честно признаваться, какой подлянки от него ждать. Многие сразу говорили, что будет catch (Exception e) {}, но это явная патология, которая автоматически обнаруживается любым анализатором кода
(
Read more... )
Comments 22
Reply
Reply
Впрочем, в C# либо пишут как-то иначе, либо еще что-то, но NPE в .net-приложениях не так уж и часто вылетают.
Reply
Reply
(The comment has been removed)
Это все вопрос правильной системы типов и удобства ее использования (вывода типов, в частности).
Я думаю никто был бы не против, если бы компилятор сам бы выводил какие исключения может бросить метод, без синтаксического оверхеда. И чтобы можно было бы для лямбд ставить ограничения что они ничего не бросают - это тоже бы добавило устойчивости API.
Но нет ведь - делают везде корявую ad-hoc реализацию, только чтобы индусы не испытывали когнитивный диссонанс.
Reply
(The comment has been removed)
Само собой это все должно выводиться автоматически, не создавать никакого фашизма, и быть исключительно полезным.
То, что толстолобые ООП-шники не осилили, не говорит вообще ни о чем.
Reply
Я вот сейчас сильно страдаю от того, что у меня нету checked exceptions в C++, а прикрутить их самостоятельно (написанием проверяющего тула) туда очень сложно.
Reply
Понятно, что ты лично страдаешь, но я согласен с цитатой из Эккеля:
Examination of small programs leads to the conclusion that requiring exception specifications could both enhance developer productivity and enhance code quality, but experience with large software projects suggests a different result - decreased productivity and little or no increase in code quality.
Reply
По-моему, это два совершенно несвязанных утверждения. То что тебе ответили мгновенно и незадумываясь - это потому что вопрос много обсуждался и решение было чётко принято. Я кажется общался по поводу checked exceptions (и каких-то ещё неровностей в языке) с Андреем Бреславом когда он с Димой Жемеровым объявил язык на JVM Language Summit - они знали, что это решение не всем понравится.
Отсылка к авторитету, к сожалению, тоже плохо работает в данном случае: я хочу exception specification как раз на большом проекте, потому что иначе у меня нету никакой практической возможности гарантировать качество продукта и то, что данные пользователя не будут повреждены.
Reply
Reply
Leave a comment