powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Почему NullPointerException не проверяемое исключение?
190 сообщений из 190, показаны все 8 страниц
Почему NullPointerException не проверяемое исключение?
    #39747646
Tsyklop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Хороший вопрос. Почему IOException проверяемое, а NPE нет.

Я загуглил и выделил такие критерии:
- придется везде явно писать что там может быть NPE поскольку много где идут операции с объектами
- причина выше делает код более уродливым
- свидетельствует об ошибке программиста

Ваши варианты? почему же все таки NPE это проверяемое исключение?
...
Рейтинг: 0 / 0
Почему NullPointerException не проверяемое исключение?
    #39747668
chpasha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tsyklopпочему же все таки NPE это проверяемое исключение?
имхо смысл некоторых (чтоб не разводить флуд о том нужны ли проверяемые исключения в принципе) исключений в том, что они могут неизбежно возникнуть при определенных обстоятельствах. Хороший пример IOException. Пропала сеть, сайт недоступен - ошибка. Если метод "знает" об этом, но ничего не может (или не должен) по этому поводу предпринять, он прокидывает исключение выше. Возможно вызывающий код сможет что-то с этим исключением сделать, например повторить. Возможно он прокинет исключение еще дальше, если это не по его части. А NullPointer это ошибка программиста, ее не должно было быть, но она случилась
...
Рейтинг: 0 / 0
Почему NullPointerException не проверяемое исключение?
    #39747673
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По прошествии лет можно констатировать что эксперимент с checked эксепшенами провалился, и хотя совсем от этого уйти не получается, но многие фреймворки и обычные программисты двигаются в сторону только unchecked exceptions. В крайне редком случае, например как в примере выше и в целом когда есть какая-то разумная возможность обработать эксепшен, то только тогда можно использовать checked. В случае нуллпоинтер, нулевая ссылка - всегда нулевая ссылка, и лучше минимизировать ущерб сразу же остановив программу.
...
Рейтинг: 0 / 0
Почему NullPointerException не проверяемое исключение?
    #39747691
Андрей Панфилов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TsyklopПочему IOException проверяемое, а NPE нет.
...
Ваши варианты? почему же все таки NPE это проверяемое исключение?Определитесь-таки, NPE checked или нет.
...
Рейтинг: 0 / 0
Почему NullPointerException не проверяемое исключение?
    #39747762
Tsyklop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Андрей Панфилов, опечатался. NPE не проверяемое.
...
Рейтинг: 0 / 0
Почему NullPointerException не проверяемое исключение?
    #39747763
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может я тупой, а что такое проверяемое и не проверяемое ?
...
Рейтинг: 0 / 0
Почему NullPointerException не проверяемое исключение?
    #39747784
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonid KudryavtsevМожет я тупой, а что такое проверяемое и не проверяемое ?наверно те что пишутся в контракте метода... Названии
...
Рейтинг: 0 / 0
Почему NullPointerException не проверяемое исключение?
    #39747787
Ilya007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonid KudryavtsevМожет я тупой, а что такое проверяемое и не проверяемое ?
Видимо вопрос в том что автор хочет чтоб они наподобие SQLException или IOException, требовали отлавливания/обработки.
Были более предсказуемы.

Решить можно несколькими способами. Самый простой с опытом сам видишь где эта херня точно может всплыть. Ну и проверки делать таки. Покурите Lombok например по этому поводу.
...
Рейтинг: 0 / 0
Почему NullPointerException не проверяемое исключение?
    #39747795
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тогда тем более не понимаю.
Хочешь писать в "название метода" - пиши, хочешь отлавливать - отлавливай
Никто не запрешает.

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
public class CheckedNPE {
	public static void myMethodWithNPE() throws NullPointerException {
		throw new NullPointerException();
	}

	public static void myMethodWithNPE_2() throws NullPointerException {
		Object o = null;
		String s = o.toString();
	}

	public static void main(String[] args) {
		try {
			myMethodWithNPE();
		} catch ( NullPointerException e1 ) {
			System.out.println( "NPE N 1");
		}
		try {
			myMethodWithNPE_2();
		} catch ( NullPointerException e1 ) {
			System.out.println( "NPE N 2");
		}
	}
}


...
Рейтинг: 0 / 0
Почему NullPointerException не проверяемое исключение?
    #39747796
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ilya007,
По мне ошибка бд и ошибка null всплывает одинаково)
...
Рейтинг: 0 / 0
Почему NullPointerException не проверяемое исключение?
    #39747800
Озверин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonid KudryavtsevМожет я тупой, а что такое проверяемое и не проверяемое ?

компилятор требует указывать чекед в троус метода - единственное различие. А то, что можешь или нет - это уже сахар.
...
Рейтинг: 0 / 0
Почему NullPointerException не проверяемое исключение?
    #39747823
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Озверин,
+1
...
Рейтинг: 0 / 0
Почему NullPointerException не проверяемое исключение?
    #39747828
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Почему NullPointerException не проверяемое исключение?
    #39747863
Partisan M
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonid KudryavtsevМожет я тупой, а что такое проверяемое и не проверяемое ?

Может. Но и предыдущие ответы тупые, кроме ссылки, которую вы дали.

Проверяемое исключение - которое требует обработки в блоке try... catch... [finally]. Вместо того, чтобы делать обработку внутри метода, можно добавить его в throws метода, тогда try... catch будет нужно в коде, охватывающем вызов метода. Он может быть в другом методе, тогда опять надо решать - обрабатывать исключение в нём или вынести в throws. Но где-нибудь в программе catch будет. Для непроверяемых испключений использование try... catch необязательно. Для проверяемых исключений надо иметь ввиду приём - можно вместо try... catch использовать try... finally без catch и throws чтоб обработку производить в catch в коде, вызывающем метод.
Проверяемые исключения можно преобразовывать в непроверяемые и наоборот. Так что обработка исключений в Java не такая уж простая тема.
...
Рейтинг: 0 / 0
Почему NullPointerException не проверяемое исключение?
    #39747885
Alexey Tomin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TsyklopХороший вопрос. Почему IOException проверяемое, а NPE нет.

Я загуглил и выделил такие критерии:
- придется везде явно писать что там может быть NPE поскольку много где идут операции с объектами
- причина выше делает код более уродливым
- свидетельствует об ошибке программиста

Ваши варианты? почему же все таки NPE это проверяемое исключение?

Проверяемые исключения- это те, которые возникают из-за внешних обстоятельств. Сеть умерла, БД сдохла, диск переполнился.
Непроверяемые - это ошибки в коде.
NPE - ошика в коде, без вариантов.
...
Рейтинг: 0 / 0
Почему NullPointerException не проверяемое исключение?
    #39747901
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey Tomin,
Чего то не хватает, т.к. "внешние" и "ошибка в коде" не слова антонимы.
...
Рейтинг: 0 / 0
Почему NullPointerException не проверяемое исключение?
    #39747904
Tsyklop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Alexey Tomin,
вот ту не совсем согласен. Если вот брать Spring к примеру. То там делают непроверяемые исключения если не хватает данных, не правильный логин или пароль и т.д. Но ведь это не значит что ошибка в коде.
...
Рейтинг: 0 / 0
Почему NullPointerException не проверяемое исключение?
    #39747910
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tsyklop,
Добавка в имени метода тебе подходит.
...
Рейтинг: 0 / 0
Почему NullPointerException не проверяемое исключение?
    #39747912
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey TominПроверяемые исключения- это те, которые возникают из-за внешних обстоятельств. Сеть умерла, БД сдохла, диск переполнился.
Непроверяемые - это ошибки в коде.
NPE - ошика в коде, без вариантов.

Создатели_JavaRuntime exceptions represent problems that are the result of a programming problem, and as such, the API client code cannot reasonably be expected to recover from them or to handle them in any way.


вот тут вот и начинается полное непонимание, как "API client code" может "recover from" "Сеть умерла, БД сдохла, диск переполнился".

Т.ч. IMHO все, что Вы перечислили, это как раз скорее RuntimeException, чем API Exception

а в целом, IMHO синтаксический сахар. Проверять и внятно обрабатывать (как минимум логировать) - никто не мешает.
...
Рейтинг: 0 / 0
Почему NullPointerException не проверяемое исключение?
    #39747944
chpasha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonid Kudryavtsevвот тут вот и начинается полное непонимание, как "API client code" может "recover from" "Сеть умерла, БД сдохла, диск переполнился"
зависит от того - кто этот "client api". в идеале он может их корректно обработать, если знает, что они могут возникнуть. Как минимум не упасть, а выдать пользователю внятное сообщение или предложить повторить попытку (если например по timeout обломались). Однако на практике это исключение возможно придется прокинуть на X уровней вверх прежде чем мы достигнем того места, где мы можем "восстановиться".
Да, в каком-то смысле это сахар, т.к. мы явно заставляет пользователя API обратить внимание на проблемы, которые могут возникнуть независимо от его воли. Однако сахар этот не очень сладкий в виду других недостатков.
...
Рейтинг: 0 / 0
Почему NullPointerException не проверяемое исключение?
    #39748044
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вообще, стратегия обработки ошибок последовательно шла так:

Возврат кода ошибки или dummy value(-1, NaN и т.д) ===> этот способ имеет следующие недостатки: не всегда найдется корректное dummy значение, ведь -1 может быть правильным значением 2) Так как сигнатура метода никак не описывает возможности ошибки, ее легко можно забыть обработать

Непроверяемые исключения ==> Это был следующий шаг, который позволял делать централизованную обработку ошибок, но все равно сама возможность ошибки никак не декларировалась и нужно было смотреть документацию и тд.

Проверяемые исключения ==> Это был эксперимент Java, насколько я знаю ни в одном другом промышленном языке такой конструкции так и не прижилось. Идея была в том, чтобы закодировать возможность ошибки в самой сигнатуре метода, вы обязаны предпринять какие-то действия(либо пробросить либо обработать), но недостатками было 1) захламление кода, когда метод может состоять из одной строчки полезного кода и 15 эксепшен хандлеры и 2) непредсказуемый флоу выполнения кода, вещь аналогичная goto, если крепко призадуматься.

Умные люди извлекли из этого урок и теперь мейнстримом является описывать возможность ошибок в качестве типа возвращаемого значения, и не только возможность ошибок, а опциоальность, асинхронность и т.д, что по научному называется effects. В данном случае программист всегда видит имеется ли возможность что вызываемый код вернет ошибку и имеет свободу извлечь значение из контейнерного типа или работать с контейнером, а реальное извлечение значение будет где-то наверху(в идеале во входной точке приложения). Таким образом ядро вашего кода остается pure(предсказуемым и без side-effectов), ошибку невозможно пропустить, но ваш флоу не может прерваться и уйти непонятно куда.

Что касается топика, и нуллпоинтеров, нет смысла кодировать такие проверки, а надо использовать тип Optional если есть какие-то возможности отсутствия значения. Если же нуллпоинтер выскакивает в другом месте, то это очевидная ошибка и программу надо прекращать ибо ваши assumptions о том что переменная будет не равна null оказались вдребезги разбиты суровойреальностью, и чтобы не навредить коду выше или ниже, лучше завершить JVM немедленно
...
Рейтинг: 0 / 0
Почему NullPointerException не проверяемое исключение?
    #39748052
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
забыл никЕсли же нуллпоинтер выскакивает в другом месте, то это очевидная ошибка и программу надо прекращать ибо ваши assumptions о том что переменная будет не равна null оказались вдребезги разбиты суровойреальностью, и чтобы не навредить коду выше или ниже, лучше завершить JVM немедленноВот так и получается, что авианосцы на боевом дежурстве оказываются небоеспособны, потому что решение о перезагрузке выпавшего в осадок компьютера системы управления огнём принимается, если правильно помню, за двенадцать часов.
"Персонал проинструктирован вводить данные в это поле".
...
Рейтинг: 0 / 0
Почему NullPointerException не проверяемое исключение?
    #39748065
chpasha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
забыл ника надо использовать тип Optional
стоит заметить, что сфера применения Optional узко ограничена, а NPE может возникнуть где угодно. например при доступе к параметрам метода или приведении типа
...
Рейтинг: 0 / 0
Почему NullPointerException не проверяемое исключение?
    #39748069
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chpashaзабыл ника надо использовать тип Optional
стоит заметить, что сфера применения Optional узко ограничена, а NPE может возникнуть где угодно. например при доступе к параметрам метода или приведении типа

1) Приведение типов - зло.
2) Почему параметр не Optional?

Ну я про то и говорю, что когда есь разумные предпосылки того что объекта может и небыть и есть какой-то способ обойти это - тогда используем Optional, в других случаях даем JVM спокойно умереть от NPE
...
Рейтинг: 0 / 0
Почему NullPointerException не проверяемое исключение?
    #39748074
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
забыл ник....даем JVM спокойно умереть от NPE
Как-то круто.

А если JVM это WebLogic с 100500 корпоративных пользователей и не законченными транзакциями, тоже даем "спокойно умереть от NPE" ?
...
Рейтинг: 0 / 0
Почему NullPointerException не проверяемое исключение?
    #39748077
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonid Kudryavtsevзабыл ник....даем JVM спокойно умереть от NPE
Как-то круто.

А если JVM это WebLogic с 100500 корпоративных пользователей и не законченными транзакциями, тоже даем "спокойно умереть от NPE" ?

Конечно, а какие варианты? Ну уточню конечно что под JVM я подразумевал программу\runnable\песочницу\реквест к сервлету\контейнер и т.д. Если JVM просто хостит контейнеры, ив контейнеры произошел NPE то надо убивать только его, я думал это очевидно
...
Рейтинг: 0 / 0
Почему NullPointerException не проверяемое исключение?
    #39748078
chpasha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
забыл никПочему параметр не Optional?

авторThe purpose of Java 8 Optionalis clearly defined by Brian Goetz, Java’s language architect:

Optional is intended to provide a limited mechanism for library method return types where there needed to be a clear way to represent “no result," and using null for such was overwhelmingly likely to cause errors


подробней о правилах хорошего тона с Optional можно здесь почитать . Как говорится, соглашаться или нет - ваше право. Конкретно про параметры/поля там с пункта 13, но лучше почитать все.
...
Рейтинг: 0 / 0
Почему NullPointerException не проверяемое исключение?
    #39748092
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
забыл никЕсли JVM просто хостит контейнеры, ив контейнеры произошел NPE то надо убивать только его, я думал это очевидно"Давайте развернём такую борьбу за мир, чтобы не осталось камня на камне!"
Если убивать(ся) по каждому NPE - не напасётесь даже контейнеров.
...
Рейтинг: 0 / 0
Почему NullPointerException не проверяемое исключение?
    #39748158
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
юзай скалу
...
Рейтинг: 0 / 0
Почему NullPointerException не проверяемое исключение?
    #39748202
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. SidorovЕсли убивать(ся) по каждому NPE - не напасётесь даже контейнеров.

Какие альтернативы? Еще раз поясню мысль:
1) Мы в сервлете, делаем что-то, натыкаемся на нулевой референс - прекращаем обработку реквеста ибо ничего путного не получится и сэкономим ресурсы БД
2) Мы в потоке\Runnable\Spark job натыкаемся на нулевой референс, что еще можно сделать кроме как закенселиться?
3) Десктопное приложение при инициализации - словили нуллпоинтер - убили JVM

В нормально написанном коде нуллпоинтеров быть не может, точка. Если есть возможность того что объекта может не быть - юзаешь Optional или фильтруешь инпут до гарантированного состояния, в любом другом случае - креш таска и фикс нуллпоинтера, никаких retry или handle
...
Рейтинг: 0 / 0
Почему NullPointerException не проверяемое исключение?
    #39748214
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
забыл ник,
Да кто ж спорит, для этого и есть разного рода тестирования, даже иногда бывает что из релиза приходится вытаскивать этих мондавошек,будь они неладные ))
...
Рейтинг: 0 / 0
Почему NullPointerException не проверяемое исключение?
    #39748229
Tsyklop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
andreykaTюзай скалу
спасибо, но нет.
...
Рейтинг: 0 / 0
Почему NullPointerException не проверяемое исключение?
    #39748295
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TsyklopandreykaTюзай скалу
спасибо, но нет.
Возможно зря, потому что
Где-то в степизабыл ник,
даже иногда бывает что из релиза приходится вытаскивать этих мондавошек,будь они неладные ))
После перехода на скалу 2 года назад, видел нуллпоинтер раза 3, все из javaбиблиотек прилетали.

П.С. Не пропагандирую скалу, там есть много моментов, но изучить крайне советую для расширения программистского сознания
...
Рейтинг: 0 / 0
Почему NullPointerException не проверяемое исключение?
    #39748308
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreykaTюзай скалусбегать от NPE в программировании это все равно что проводнику поезда жаловаться на стук колес.
Это атрибут жизни. Побочный продукт создания программы.
...
Рейтинг: 0 / 0
Почему NullPointerException не проверяемое исключение?
    #39748327
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123andreykaTюзай скалусбегать от NPE в программировании это все равно что проводнику поезда жаловаться на стук колес.
Это атрибут жизни. Побочный продукт создания программы.
Какие к черту колеса у чемодана? Это ж его носить неудобно будет
...
Рейтинг: 0 / 0
Почему NullPointerException не проверяемое исключение?
    #39748341
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
забыл ник,
я к тому что не ЯП надо менять, а идти к уменьшению NPE через скилы и опыт.
У начинающего их много, у профи раз в полгода.
...
Рейтинг: 0 / 0
Почему NullPointerException не проверяемое исключение?
    #39748393
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
забыл ник,
Спасибо, не, все определяет корпоративный стандарт, так сказать - страну не выбирают,
имхо, все зависит от качества создания кода + правильного архитектурного решения, нет золотого языка: есть просто код и есть говнокод.
нулпоинт частный случай, ну сунете вы свои ноздри не туда и лучите офбаундексепшен - и куда бежать. на какой язык ...
...
Рейтинг: 0 / 0
Почему NullPointerException не проверяемое исключение?
    #39748538
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TsyklopandreykaTюзай скалу
спасибо, но нет.
оборачивай всё в опшиналы.
...
Рейтинг: 0 / 0
Почему NullPointerException не проверяемое исключение?
    #39748558
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreykaT,
Есть более древние средства:
- конструкторы делать без райзе и всегда создавать объект
- читать документацию и делать защиту от прилетевшего NPE по документации.
- проверять не твои входные выходные)
...
Рейтинг: 0 / 0
Почему NullPointerException не проверяемое исключение?
    #39748566
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Таки да. Но тс хотел чекед ексепшн. Заворачивание в опшн это суть оно и есть. Обёртка заставит тебя обработать кейс когда есть только ничего
...
Рейтинг: 0 / 0
Почему NullPointerException не проверяемое исключение?
    #39748573
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreykaTОбёртка заставитну если только заставит!
И если не забудет поставить инструкции чтобы заставить.
Или мы про неожиданные NPE?
...
Рейтинг: 0 / 0
Почему NullPointerException не проверяемое исключение?
    #39748578
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
забыл никЕще раз поясню мысль"Аналогично, шеф" - Э.Успенский, "Следствие ведут колобки".

И NullPointerException и, например, NumberFormatException - суть одно и то же: некорректные данные.
При этом, чтобы определить null достаточно сделать простое сравнение, а чтобы проверить валидность формата требуются достаточно сложные вычисления. Вот, собственно, и вся разница.

Падать каждый раз, когда у вас оказались некорректные данные - глупо. Хотя бы потому, что бывают "разумные умолчания".
В результате, в некоторых случаях, RuntimeException можно просто подавить (запротоколировать), сохранив корректность поведения.

P.S.
Напомню, для полноты картины, что Exception тоже не контролируются, но уже по другим причинам.
...
Рейтинг: 0 / 0
Почему NullPointerException не проверяемое исключение?
    #39748581
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
мое имхо, что бездумно хендлить все нпе всквозь чревато тем что у тебя может быть ошибка какая-нибудь вообще связанная не с тем что у тебя нпе появился. а захэндлить эту ошибку потом умаешься т.к. 100500й обработкой нпе она пробрасывается вообще хз куда туда где ее и нет вовсе. посему я (опять таки имхо) полагаю что явно хэндлить нпе надо только там где ты явно их ожидаешь.

кстати.. по скале.. сейчас кинули на скаловский проект. мне показалось что там тоже излишне этому придают внимание и всё суть слилось к тому что если у тебя может быть дырка вместо значения просто юзай опшн и всё. правда, потом появляется барахло навроде тут вот мы думали что дырок быть не может а теперь оказывается может и переписываешь как ишак всё на опшены.
...
Рейтинг: 0 / 0
Почему NullPointerException не проверяемое исключение?
    #39748721
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. SidorovИ NullPointerException и, например, NumberFormatException - суть одно и то же: некорректные данные.

Оо От кого-кого, а от вас я такой чуши услышать не ожидал. Именно потому что его можно обработать, NumberFormatException и является проверяемым. По вашей логике тогда и NPE должен таким быть. Не говоря о том, что сравнить нуллпоинтер с невалидными данными, это как просить айтишника починить компьютер, ну ты ж все равно с ними там работаешь...(с)

Basil A. SidorovПри этом, чтобы определить null достаточно сделать простое сравнение,
Поэтому я и говорю, что вся валидация входных данных происходит на первом шаге программы, после которого все инварианты домен модели провалидированы и гарантировано верны. Если доменная модель предполагает отсутсвие некого значения - оно кодируется как optional. После этого запускается бизнес-логика(проверка на null ,к слову, врядли ею является, программисты часто путают с нею детали имплементации), которая в идеале без side-эффектов, при одинаковом input должны получаться одинаковые и предсказуемые output. И какие тут null могут быть? В таком случае только убивать(ладно, ладно не JVM, а текущий поток, уговорили) ибо инвариант программы нарушен. точка. Лови-свищи потом причину этого NPE.

Basil A. SidorovПадать каждый раз, когда у вас оказались некорректные данные - глупо.

Конечно, лучше вернуть некорректный результат.
Basil A. SidorovВ результате, в некоторых случаях, RuntimeException можно просто подавить (запротоколировать), сохранив корректность поведения.

Ну равняться на говнокод идея не очень здравая. А JAVA API-делы ребята не устают обсираться раз за разом, достаточно вспомнить первые дизайны collection и datetime api.

Basil A. SidorovP.S.
Напомню, для полноты картины, что Exception тоже не контролируются, но уже по другим причинам.
Это-то тут к чему? Подтвердить авторитетность мнения ссылкой надеясь что никто не будет разбираться?

P.S.
Я прекрасно понимаю многие ограничения, которые накладываются Java(во многом из-за прежних ошибок и нежеланием исправить дело из-за маниакального желания сохранять обратную совместимость) на всю идеальную картину, описанную выше, и optional там убогое кастрированное говно, но это не повод упираться и говорить что "все так должно быть", потому что мы годами так пишем и по-другому непанимаим. Если бы все следовали такой точке зрения то ни лямбд, ни стримов ни паттерн-матчинга мы бы так и не дождались. так что NPE в коде это никак не может быть частью НОРМАЛЬНО написанной программы.
...
Рейтинг: 0 / 0
Почему NullPointerException не проверяемое исключение?
    #39748727
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreykaTполагаю что явно хэндлить нпе надо только там где ты явно их ожидаешь.
Это в каких случаях, например? Можно из реального проекта? Если не изменяет память catch(NullPointerException) многими тулами статик-анализа подсвечивается как ошибка. Ну и этот код никогда в жизни не прошел бы код-ревью в нормальной конторе.
andreykaTкстати.. по скале.. сейчас кинули на скаловский проект. мне показалось что там тоже излишне этому придают внимание и всё суть слилось к тому что если у тебя может быть дырка вместо значения просто юзай опшн и всё. правда, потом появляется барахло навроде тут вот мы думали что дырок быть не может а теперь оказывается может и переписываешь как ишак всё на опшены.
Можно опять же пример? Вся красота скалы в for-comprehension, что есть синтаксический сахар над монадами. Когда ты входишь в optional контекст и далее работаешь с чистыми и валидными данными, а их отсутствие проверяется и хэндлится без вашего участия. Использовать optional вне контекста монад мало чем отличается от java-way. Собственно, поэтому optional так туго в java и прижился - потому что приходится таскать его туда-сюда через иерархии вызовов и захламлять код проверками на isDefined и прочей херотой.
...
Рейтинг: 0 / 0
Почему NullPointerException не проверяемое исключение?
    #39748752
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
что значит без твоего участия хендлится? если ты имеешь ввиду операции внутри маппинга и никогда не вынимать чистое значение, ну так имхо, это тоже самое как предположение что у нас типа всё окей и типа работаем будто всё есть и пихаем туда 100500 операций или 100500 последовательных маппингов. но в любом случае ты это оконечишь орелсом. ну или как есть его передашь там куда-нибудь дальше где оно всё-равно уже без твоего участия сделает тоже самое.
...
Рейтинг: 0 / 0
Почему NullPointerException не проверяемое исключение?
    #39748754
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
забыл никandreykaTполагаю что явно хэндлить нпе надо только там где ты явно их ожидаешь.
Это в каких случаях, например? Можно из реального проекта? Если не изменяет память catch(NullPointerException) многими тулами статик-анализа подсвечивается как ошибка.
ну например, ты читаешь сущность с базы где есть поля (у сущности и у базы), которые могут быть налл. очевидно, что все дальнейшие эволюции с этой сущностью ты будешь проводить подозревая, что там может быть и пусто.
...
Рейтинг: 0 / 0
Почему NullPointerException не проверяемое исключение?
    #39748756
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreykaTну например, ты читаешь сущность с базы где есть поля (у сущности и у базы), которые могут быть налл. очевидно, что все дальнейшие эволюции с этой сущностью ты будешь проводить подозревая, что там может быть и пусто.
Почему они не обозначены в энтити как Optional?
Подозреваю, что правильный ответ - так проще и меньше печатать, и сигнатуру функций красивее, ну так чему удивляться? Система типов для того и создана чтобы облегчать нам жизнь, и если какую-то проверку можно перенести в тип - то надо так и делать, иначе вам в javascript
...
Рейтинг: 0 / 0
Почему NullPointerException не проверяемое исключение?
    #39748757
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreykaTчто значит без твоего участия хендлится? если ты имеешь ввиду операции внутри маппинга и никогда не вынимать чистое значение, ну так имхо, это тоже самое как предположение что у нас типа всё окей и типа работаем будто всё есть и пихаем туда 100500 операций или 100500 последовательных маппингов. но в любом случае ты это оконечишь орелсом. ну или как есть его передашь там куда-нибудь дальше где оно всё-равно уже без твоего участия сделает тоже самое.
Ну да, во входной точке приложения у тебя будет

Код: java
1.
2.
case Some(value) => servlet.print(value)
case None => servlet.print("Error")



И что в этом плохоо? Если это в одном месте, прямо у входа?
Вся идея как раз в том, чтобы поместить в контекст и не доставать чистое значение, только на самом верху. А все остальное - чистая функция без сайд-эффектов. Предсказуемая и повторяемая. Геморрой начинается когда у тебя два контекста(например Option + Future или Either + Option и т.д), тогда да - в скале приходится пичать тучу кода, но ведь можно взять scalaz или cats
...
Рейтинг: 0 / 0
Почему NullPointerException не проверяемое исключение?
    #39748758
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
забыл никandreykaTну например, ты читаешь сущность с базы где есть поля (у сущности и у базы), которые могут быть налл. очевидно, что все дальнейшие эволюции с этой сущностью ты будешь проводить подозревая, что там может быть и пусто.
Почему они не обозначены в энтити как Optional?
Подозреваю, что правильный ответ - так проще и меньше печатать, и сигнатуру функций красивее, ну так чему удивляться? Система типов для того и создана чтобы облегчать нам жизнь, и если какую-то проверку можно перенести в тип - то надо так и делать, иначе вам в javascript
Ну так джава то не заставляет. А в скале в каком нибудь слике ты тупо не сможешь нормально написать код если не назовешь такое поле опшином. Плюс опшин сам по себе выглядит не очень. Чисто визуально. В джаве совсем не очень. В скале не очень не совсем но все равно не очень.

Что в этих обертках вымораживает это не только опшин плюс Футура но например опшин в опшине или Футура футуры с опшином и прочие матрёшки. Зато типа безопасно. Ога
...
Рейтинг: 0 / 0
Почему NullPointerException не проверяемое исключение?
    #39748771
Alexey Tomin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Чего то не хватает, т.к. "внешние" и "ошибка в коде" не слова антонимы.

Пример?
RuntimeError не беру- это третий вариант, да.

Tsyklopвот ту не совсем согласен. Если вот брать Spring к примеру. То там делают непроверяемые исключения если не хватает данных, не правильный логин или пароль и т.д. Но ведь это не значит что ошибка в коде.

В спринге наг@нокожено немало.

Если брать системные исключения- то всё, как я писал.

Единственная неочевидная вещь - NumberFormatException - видимо предполагается, что пржде чем за toInteger хвататься надо пройтись регуляркой, или вообще форматированное поле ввода использовать.
...
Рейтинг: 0 / 0
Почему NullPointerException не проверяемое исключение?
    #39748772
Alexey Tomin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chpashaзабыл ника надо использовать тип Optional
стоит заметить, что сфера применения Optional узко ограничена, а NPE может возникнуть где угодно. например при доступе к параметрам метода или приведении типа

Если не использоват kotlin, то можно хотя бы @Nonnull/@Nullable использовать и читать варнинги.
...
Рейтинг: 0 / 0
Почему NullPointerException не проверяемое исключение?
    #39748785
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
забыл никОт кого-кого, а от вас я такой чуши услышать не ожидал. Именно потому что его можно обработать, NumberFormatException и является проверяемым"Аналогично, шеф".
Я не зря вставлял ссылки на документацию - оба исключания являются наследником RuntimeException .
Они оба непроверяемые, каким бы странным это не казалось в вашей картине мира.
...
Рейтинг: 0 / 0
Почему NullPointerException не проверяемое исключение?
    #39748789
Alexey Tomin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TsyklopХороший вопрос. Почему IOException проверяемое, а NPE нет.

Я загуглил и выделил такие критерии:
- придется везде явно писать что там может быть NPE поскольку много где идут операции с объектами
- причина выше делает код более уродливым
- свидетельствует об ошибке программиста

Ваши варианты? почему же все таки NPE это проверяемое исключение?

Кстати. По сути все проверяемые исключения не являются исключениями вообще.
Открывая файл, даже если он тут точно был, никогда нельзя быть уверен, что он ещё есть. Просто потому, что его может удалить другая программа. Это не исключительная ситуация, а нормальный результат.
И любой запрос в сеть не обязан сделать то, что его просят.
Поэтому в правильном мире все подобные методы должны возвращать нечто вроде Either<IOErrorDescription, File>.
Но что-то подобная прекрасная вещь из функционального мира никак не попадёт в JVM-языки.
...
Рейтинг: 0 / 0
Почему NullPointerException не проверяемое исключение?
    #39748794
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey Tomin,
Потому что для асинхронной работы придется весь код переписать. Он дугой будет.
...
Рейтинг: 0 / 0
Почему NullPointerException не проверяемое исключение?
    #39748796
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey TominПоэтому в правильном мире все подобные методы должны возвращать нечто вроде Either<IOErrorDescription, File>.в моделировании ИС строят упрощенную модель. Т.е.допускают что файл не удалят, а если удалят, то это форс мажор.
...
Рейтинг: 0 / 0
Почему NullPointerException не проверяемое исключение?
    #39748812
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
с изером кстати, неплохая идея. но суть это просто параллельная концепция замены проверяемого ексепшена и всё. короче, те же яйца, но в анфас.
...
Рейтинг: 0 / 0
Почему NullPointerException не проверяемое исключение?
    #39748815
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey TominПоэтому в правильном мире все подобные методы должны возвращать нечто вроде Either<IOErrorDescription, File>.
Но что-то подобная прекрасная вещь из функционального мира никак не попадёт в JVM-языки.
тоже самое разница вместо трайкача ты делаешь всё совершенно тоже самое но кейсами. тут не кровати переставлять надо. тут шлюх менять нужно.
...
Рейтинг: 0 / 0
Почему NullPointerException не проверяемое исключение?
    #39748835
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreykaTAlexey TominПоэтому в правильном мире все подобные методы должны возвращать нечто вроде Either<IOErrorDescription, File>.
Но что-то подобная прекрасная вещь из функционального мира никак не попадёт в JVM-языки.
тоже самое разница вместо трайкача ты делаешь всё совершенно тоже самое но кейсами. тут не кровати переставлять надо. тут шлюх менять нужно.+1
...
Рейтинг: 0 / 0
Почему NullPointerException не проверяемое исключение?
    #39748891
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreykaTтоже самое разница вместо трайкача ты делаешь всё совершенно тоже самое но кейсами. тут не кровати переставлять надо. тут шлюх менять нужно.

Отличий много, перечислю основные -
1) Исключения, даже checked легко забыть обработать\подавить пустым catch блоком. В случае Either, а лучше наверное даже Try, тебе никуда не деться, придется обработать. Этот концепт почему-то тяжелее всего дается java-програмситам, которым Java слишком много позволяет в плане игнора исключительных ситуаций
2) Исключения, это замаскированный аналог goto, из-за которого флоу программы становится неочевидным и запутанным
3) Исключения генерируют стектрейс, что намного перфоманс затратнее чем создание обертки
Список можно продолжать, Either это прежде всего value, которое можно хранить в массиве, передавать в функцию и т.д.
...
Рейтинг: 0 / 0
Почему NullPointerException не проверяемое исключение?
    #39748898
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorovзабыл никОт кого-кого, а от вас я такой чуши услышать не ожидал. Именно потому что его можно обработать, NumberFormatException и является проверяемым"Аналогично, шеф".
Я не зря вставлял ссылки на документацию - оба исключания являются наследником RuntimeException .
Они оба непроверяемые, каким бы странным это не казалось в вашей картине мира.
Да, вы правы, NumberFormatException является Runtime, что лишь еще раз доказывает корявость дизайна. В идеале, опять же все должно сводиться к Optional[Number], просто на момент написания NFE, очевидно ни опшиналов ни какого-либо другого механизма не существовало. Они выбрали оптимальный на тот момент вариант, ну такова селяви.

Но это не отменяет всего что я сказал прежде и честно говоря я вообще против каких=либо эксепшенов
...
Рейтинг: 0 / 0
Почему NullPointerException не проверяемое исключение?
    #39748901
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
забыл никandreykaTтоже самое разница вместо трайкача ты делаешь всё совершенно тоже самое но кейсами. тут не кровати переставлять надо. тут шлюх менять нужно.

Отличий много, перечислю основные -
1) Исключения, даже checked легко забыть обработать\подавить пустым catch блоком. В случае Either, а лучше наверное даже Try, тебе никуда не деться, придется обработать. Этот концепт почему-то тяжелее всего дается java-програмситам, которым Java слишком много позволяет в плане игнора исключительных ситуаций
2) Исключения, это замаскированный аналог goto, из-за которого флоу программы становится неочевидным и запутанным
3) Исключения генерируют стектрейс, что намного перфоманс затратнее чем создание обертки
Список можно продолжать, Either это прежде всего value, которое можно хранить в массиве, передавать в функцию и т.д.

т.е. ты считаешь когда эксепшн обрабатывают специальной уникальной для эксепшна конструкцией - это типа плохо и не тру. а когда его обрабатывают по-сути очередным иф-елсом -- это окей? )) мне кажется, что кейс он вообще-то изначально предназначался для кое-чего другого а то что в той же скале они порой, мапят фор-аелдами, а ловят эксепшены кейсами -- вот тут точно чот не то в датском королевстве.
...
Рейтинг: 0 / 0
Почему NullPointerException не проверяемое исключение?
    #39748902
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
забыл никСписок можно продолжать, Either это прежде всего value, которое можно хранить в массиве, передавать в функцию и т.д.
это кстати приятное его свойство, но как быть с риском образования матрёшек. когда у тебя будет изер изера изера?
...
Рейтинг: 0 / 0
Почему NullPointerException не проверяемое исключение?
    #39748907
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreykaTзабыл никСписок можно продолжать, Either это прежде всего value, которое можно хранить в массиве, передавать в функцию и т.д.
это кстати приятное его свойство, но как быть с риском образования матрёшек. когда у тебя будет изер изера изера?

это как раз-таки легко. Для этого и существует for-comprehension. Откуда появляется второй слой either, если он должен схлопываться flatMap? Если приведешь пример, можем вместе обсудить как отрефакторить. У меня лично такого не встречалось. Вот Future[Try[Option]] - тут есть определенные проблемы.
...
Рейтинг: 0 / 0
Почему NullPointerException не проверяемое исключение?
    #39748909
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
окей, я тебя понял ) периодически втыкаюсь в это и как то там переставляю всё местами и получается избавиться. наверное это и правильно. будет - спрошу.

кстати футур трай опшн - тоже неплохой вариант матрёшки.
...
Рейтинг: 0 / 0
Почему NullPointerException не проверяемое исключение?
    #39748913
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
забыл ник1) Исключения, даже checked легко забыть обработать\подавить пустым catch блокомЛюбое исключение можно подавить, но нельзя "забыть" о проверяемых исключениях.
Проверяемые исключения именно для того и делали, чтобы гарантировать их обработку.Список можно продолжать, Either это прежде всего value, которое можно хранить в массиве, передавать в функцию и т.д."Допустим, ты пробил стену головой. Ну и что ты будешь делать в соседней камере?"
...
Рейтинг: 0 / 0
Почему NullPointerException не проверяемое исключение?
    #39748916
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreykaT
т.е. ты считаешь когда эксепшн обрабатывают специальной уникальной для эксепшна конструкцией - это типа плохо и не тру. а когда его обрабатывают по-сути очередным иф-елсом -- это окей? )) мне кажется, что кейс он вообще-то изначально предназначался для кое-чего другого а то что в той же скале они порой, мапят фор-аелдами, а ловят эксепшены кейсами -- вот тут точно чот не то в датском королевстве.
Нету никакой специальной конструкции и нету никакого иф-елса. Отсутсвие значения\возможность ошибки\асинхронность это лишь побочные эффекты вашей бизнес-логики, чтобы четко описать их суть, и вводятся эти контейнеры(Try, Option...). На входе мы проверили валидность данных, поместили в контекст и дальше работаем с чистеньким кодом

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
def loadEmployee(name:String):Optional[Employee] = db.loadEmployee(name)
def getManager(emp:Employee):Optional[Manager] = emp.getManager
def getDepartment(man:Manager):Optional[Department] = man.getDepartment

//точка входа
def findEmployeeManagerDepartmentName(name:String) = {
   if(name.isBalnk) /// throw
   val depName = for {
       e <- loadEmployee(name)
       man <- getManager(e)
       dep <- getDepartment(man)
   } yield name
   depName match {
      case Some(n) => println("Name is " + n)
      case None => print("Not found")
   }
}



Каждый метод возвращает опшинал, но внутри for{} - мы работаем только с чистыми значениями, если где-то вернется None, то без твоего вмешательства цепочка прервется и на выходе будет None, который ты ЕДИНОЖДЫ должен обработать само собой.
...
Рейтинг: 0 / 0
Почему NullPointerException не проверяемое исключение?
    #39748921
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. SidorovЛюбое исключение можно подавить, но нельзя "забыть" о проверяемых исключениях.
Проверяемые исключения именно для того и делали, чтобы гарантировать их обработку.
Тема дискуссии потихоньку размывается. Вы скорее говорите о Java, а я в целом о механизмах обработки ошибок. В контексте Java, учитывая реалии и длинный хвост backward-compatibility, я в принципе согласен с вашими замечаниями. Я лишь хочу сказать что механизм чекед эксепшенов это был эксперимент, и он по факту не удался. А насчет "нельзя забыть" приводит лишь к прекрасному коду типа

Код: java
1.
2.
3.
4.
5.
try{
   db.call()
} catch (Throwable e){
   // Something happened
}



что скорее не решает проблему, а еще больше усложняет и запутывает. В случае типа, в котором закодирована возможность ошибки, проигнорировать не получится
...
Рейтинг: 0 / 0
Почему NullPointerException не проверяемое исключение?
    #39748922
Alexey Tomin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreykaTAlexey TominПоэтому в правильном мире все подобные методы должны возвращать нечто вроде Either<IOErrorDescription, File>.
Но что-то подобная прекрасная вещь из функционального мира никак не попадёт в JVM-языки.
тоже самое разница вместо трайкача ты делаешь всё совершенно тоже самое но кейсами.

Какими кейсами? Вы о чём?

На самом деле проблема явно проявляется, когда список объектов для обработки куда-то ушёл, а потом оттуда надо сообщить, что 3 файла обработаны, один не найден, один не того формата. И вот тут с exception начинается ломка, а с either - всё просто и удобно.
Или когда надо обработать список объектов, которые в процессе обработки либо претерпевают превращения, либо отбраковываются, а на выходе- надо обработанные выдать, а остальные- записать в лог.
И тут получается либо адский цикл с кучей continue (return, если разбить на методы), либо простейший функциональный пайплайн.
...
Рейтинг: 0 / 0
Почему NullPointerException не проверяемое исключение?
    #39748934
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
забыл никА насчет "нельзя забыть" приводит лишь к прекрасному коду типа
Код: java
1.
2.
3.
4.
5.
try{
   db.call()
} catch (Throwable e){
   // Something happened
}

что скорее не решает проблему, а еще больше усложняет и запутывает."Вы просто не умеете их готовить".
Исключительная ситуация создаётся внешними условиями. Способ обработки никак не может повлиять на сам факт наличия (отсутствия) исключительной ситуации.
Если вы пытаетесь обработать исключительную ситуацию, не понимая, что делать - будет плохо при любом способе обработки.
Если вы разумный человек и не пытаетесь делать то, чего не понимаете, то контролируемые исключения - всего лишь способ явно указать: "я не знаю, что делать с этим исключением".
...
Рейтинг: 0 / 0
Почему NullPointerException не проверяемое исключение?
    #39748938
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey Tominчто 3 файла обработаны, один не найден, один не того формата.3 типа исключения и секции. Что сложного?
...
Рейтинг: 0 / 0
Почему NullPointerException не проверяемое исключение?
    #39748942
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вернее даже две.
Сколько обработано вообще оффтоп.
...
Рейтинг: 0 / 0
Почему NullPointerException не проверяемое исключение?
    #39748946
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Что сложного?В стримы не воткнёшь, а значит "больше кода".

P.S.
Нет, я не считаю, что это плохо.
...
Рейтинг: 0 / 0
Почему NullPointerException не проверяемое исключение?
    #39748963
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Alexey Tominчто 3 файла обработаны, один не найден, один не того формата.3 типа исключения и секции. Что сложного?
а куда список правильно обработанных? В конструктор исключения?
...
Рейтинг: 0 / 0
Почему NullPointerException не проверяемое исключение?
    #39748966
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. SidorovВ стримы не воткнёшь, а значит "больше кода".
В soap, http, асинхронность, потоки не воткнуть, но все равно - не велика потеря)
...
Рейтинг: 0 / 0
Почему NullPointerException не проверяемое исключение?
    #39748967
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
забыл никPetro123пропущено...
3 типа исключения и секции. Что сложного?
а куда список правильно обработанных? В конструктор исключения?а он каким боком к Исключительной ситуации?
Наполовину беременным нельзя.
...
Рейтинг: 0 / 0
Почему NullPointerException не проверяемое исключение?
    #39748969
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если нужен список, то нужно давить исключения, rollback и писать логи.
...
Рейтинг: 0 / 0
Почему NullPointerException не проверяемое исключение?
    #39748997
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123забыл никпропущено...

а куда список правильно обработанных? В конструктор исключения?а он каким боком к Исключительной ситуации?
Наполовину беременным нельзя.

А теперь читаем с чего начался разговор...
...
Рейтинг: 0 / 0
Почему NullPointerException не проверяемое исключение?
    #39749009
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
забыл ник,
Я отвечал на пост 21765926
...
Рейтинг: 0 / 0
Почему NullPointerException не проверяемое исключение?
    #39749024
Озверин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
забыл никPetro123пропущено...
а он каким боком к Исключительной ситуации?
Наполовину беременным нельзя.

А теперь читаем с чего начался разговор...

а я не понял, где этот разговор начался...
...
Рейтинг: 0 / 0
Почему NullPointerException не проверяемое исключение?
    #39749040
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Озверинзабыл никпропущено...


А теперь читаем с чего начался разговор...

а я не понял, где этот разговор начался...

вот тут -

Alexey Tomin
На самом деле проблема явно проявляется, когда список объектов для обработки куда-то ушёл, а потом оттуда надо сообщить, что 3 файла обработаны, один не найден, один не того формата. И вот тут с exception начинается ломка, а с either - всё просто и удобно.
Или когда надо обработать список объектов, которые в процессе обработки либо претерпевают превращения, либо отбраковываются, а на выходе- надо обработанные выдать, а остальные- записать в лог.
И тут получается либо адский цикл с кучей continue (return, если разбить на методы), либо простейший функциональный пайплайн.
...
Рейтинг: 0 / 0
Почему NullPointerException не проверяемое исключение?
    #39749042
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Озверин,
У кого что болит)).
Меня пока устраивает система исключений. Неожиданные бывают, значит сам виноват.
Имхо.
...
Рейтинг: 0 / 0
Почему NullPointerException не проверяемое исключение?
    #39749046
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey TominНа самом деле проблема явно проявляется, когда список объектов для обработки куда-то ушёл ,
Если ушел, то не надо исключения использовать.
Ответ тот же.
...
Рейтинг: 0 / 0
Почему NullPointerException не проверяемое исключение?
    #39749056
Озверин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Если нужен список, то нужно давить исключения, rollback и писать логи.

it depends.

В зависимости от бизнес логики:
- обработать до ошибки, вернуть обработанные и ошибку
- обработать все до конца, вернуть обработанные и ошибки, если были

Вариантов то много, но никто не запрещает написать всякого "сахара" который скроет логику.

Вариация на тему: https://github.com/hgwood/java8-streams-and-exceptions
...
Рейтинг: 0 / 0
Почему NullPointerException не проверяемое исключение?
    #39749061
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Озверин,
Вот пример.
У меня в стеке на глубине 10 только идет запись в базу.
А логика и цикл записей коллекции вверху первым уровнем.
Т.е. если дубль объекта в базе, то райзе в той глубине и уже там где for я решаю давить или нет.
Иначе как мне тут сахар поможет?
Все до конца обработать решается там где for стоит.
...
Рейтинг: 0 / 0
Почему NullPointerException не проверяемое исключение?
    #39749067
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Озверин,
Рассматривать стримы, это как то узко imho.
Они только появились. Так много на них пишут?
...
Рейтинг: 0 / 0
Почему NullPointerException не проверяемое исключение?
    #39749181
Озверин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Озверин,
Рассматривать стримы, это как то узко imho.
Они только появились. Так много на них пишут?

да, сейчас все идет в реактив сторону, соответственно и стримы очень часто используются.
...
Рейтинг: 0 / 0
Почему NullPointerException не проверяемое исключение?
    #39749182
Озверин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Озверин,
Вот пример.
У меня в стеке на глубине 10 только идет запись в базу.
А логика и цикл записей коллекции вверху первым уровнем.
Т.е. если дубль объекта в базе, то райзе в той глубине и уже там где for я решаю давить или нет.
Иначе как мне тут сахар поможет?
Все до конца обработать решается там где for стоит.

ну как я и говорю - это зависит от бизнес логики. Если какой-нибудь уровень выше знает, что делать с такой ситуацией - ну ок, орабатывай, а если нет - ну значит ну его нафиг.
...
Рейтинг: 0 / 0
Почему NullPointerException не проверяемое исключение?
    #39749229
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ОзверинPetro123Озверин,
Рассматривать стримы, это как то узко imho.
Они только появились. Так много на них пишут?

да, сейчас все идет в реактив сторону, соответственно и стримы очень часто используются.имхо не согласен.
Корпоратив как был, так есть. А вот андроиды всякие, js - те еще ищут свой путь).
...
Рейтинг: 0 / 0
Почему NullPointerException не проверяемое исключение?
    #39749230
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ОзверинPetro123Озверин,
Вот пример.
У меня в стеке на глубине 10 только идет запись в базу.
А логика и цикл записей коллекции вверху первым уровнем.
Т.е. если дубль объекта в базе, то райзе в той глубине и уже там где for я решаю давить или нет.
Иначе как мне тут сахар поможет?
Все до конца обработать решается там где for стоит.

ну как я и говорю - это зависит от бизнес логики. Если какой-нибудь уровень выше знает, что делать с такой ситуацией - ну ок, орабатывай, а если нет - ну значит ну его нафиг.мое имхо что опшионалы тут не вижу чем помогут.
Если я пропустил или возбудил исключительную на 10м уровне стека, то все 5 тысяч строк кода я не просматриваю.
Ловлю возле for и всё.
Имхо.
...
Рейтинг: 0 / 0
Почему NullPointerException не проверяемое исключение?
    #39749232
Alexey Tomin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Alexey Tominчто 3 файла обработаны, один не найден, один не того формата.3 типа исключения и секции. Что сложного?

Исключения они только поодному ходят.
А надо обработать все файлы. И не важно, что среди них были отсутствующие.
А потом надо передать результат обработки дальше. А потом ещё дальше.
И тут даже без стримов всё может быть- обычный for и if - всё одно код намного читабельнее выходит, чем (вынужденное) сияние всего в один метод.
...
Рейтинг: 0 / 0
Почему NullPointerException не проверяемое исключение?
    #39749234
Alexey Tomin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Alexey TominНа самом деле проблема явно проявляется, когда список объектов для обработки куда-то ушёл ,
Если ушел, то не надо исключения использовать.
Ответ тот же.

У меня ощщуение, что Вы либо не поняли, что я пишу, либо не читаете.
Причём каждый раз при общении с Вами.
...
Рейтинг: 0 / 0
Почему NullPointerException не проверяемое исключение?
    #39749236
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey Tomin,
Если бы вы были ближе к народу, программистам, коду. Я бы вас понял).
Вы говорите исключительно архитектурные вещи. Они бывают оторваны от реальности.
Кто вам мешал прокомментировать что эти стримы очень нужны как юз кейс именно для вас.
...
Рейтинг: 0 / 0
Почему NullPointerException не проверяемое исключение?
    #39749238
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey TominRuntimeError не беру - это третий вариант, да.именно про это и отметил. Не хватало третьего варианта при утверждениии: "либо вариант А либо вариант Б".
Поэтому я вас не понял).
Мы это в теме и разбираем.
...
Рейтинг: 0 / 0
Почему NullPointerException не проверяемое исключение?
    #39749242
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey TominИ вот тут с exception начинается ломка, а с either - всё просто и удобно.
Обосновывайте, где проблема.
«Да как же тебя понять, коли ты ничего не говоришь?» (из комедии «Иван Васильевич меняет профессию»)
Удачи!
...
Рейтинг: 0 / 0
Почему NullPointerException не проверяемое исключение?
    #39749243
Озверин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Озверинпропущено...


да, сейчас все идет в реактив сторону, соответственно и стримы очень часто используются.имхо не согласен.
Корпоратив как был, так есть. А вот андроиды всякие, js - те еще ищут свой путь).

корпоратив идет в реактив через микросервисы, которые тоже хотят быть реактив.
...
Рейтинг: 0 / 0
Почему NullPointerException не проверяемое исключение?
    #39749244
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Озверин,
О да!))) Микросервисы.
Тут 2 человека ими занимаются.
Причем я не ретроград, поверь).
Просто не понял, что его пост выше был посвящен стримам.
У меня их нет пока. Так прошел бы мимо.
...
Рейтинг: 0 / 0
Почему NullPointerException не проверяемое исключение?
    #39749415
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123мое имхо что опшионалы тут не вижу чем помогут.
Если я пропустил или возбудил исключительную на 10м уровне стека, то все 5 тысяч строк кода я не просматриваю.
Ловлю возле for и всё.
Имхо.

Exceptions:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
method1 throws Exception = throw new Exception
method2 throws Exception = method1()
method3 throws Exception = method2()
method4 throws Exception = method3()
method5 throws Exception = method4()

main{
  for (1 to 100) {
      try
      method5()
      catch exc; continue;
  }
}



Optional:

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
Optional method1 = Optional.of()
Optional method2 = method1()
Optional method3 = method2()
Optional method4 = method3()
Optional method5 = method4()

main{
  collection.map(method5).getOrElse(....)// Решение применяется в том же месте
}


Функционально код идентичный, просто ты латентный любитель goto и любишь говнокодить. Это было норм 5 лет назад, пора переучиваться, а то отстанешь навеки
...
Рейтинг: 0 / 0
Почему NullPointerException не проверяемое исключение?
    #39749424
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Озверин,
О да!))) Микросервисы.
Тут 2 человека ими занимаются.
Причем я не ретроград, поверь).

Если я этого не вижу, значит этого нет(с).
Частью моих обязанностей является проведение интервью с внешними\внутренними программистами и техническая экспертиза проектов, с целью определить людей на подходящие для них проекты. Так вот, в моей конторе 500+ человек и около 30 проектов в разработке. Контора специализируется на жестком интерпрайзе для американского рынка. Если 4 года назад это были Spring, Hibernate, реляционки, то сейчас как минимум в половине случаев это стримы, спарк, ML, nosql и микросервисы и чем дальше, тем процент таких проектов увеличивается. Напомню, контора специализируется на энтерпрайзе. Так вот, сейчас огромный головняк, куда деть тучу spring-еров и обычных javистов. Проводим ускоренные курсы по ФП, стримам, микросервисам и бигдате, чтобы хоть как-то позакрывать вакансии.
...
Рейтинг: 0 / 0
Почему NullPointerException не проверяемое исключение?
    #39749426
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
забыл ник,
За пример спасибо. Уважаю.
А про goto ты неправ.
Вот тут спорят про что 7 страниц?
...
Используете вы Optional ?
...
Все используют?
...
Рейтинг: 0 / 0
Почему NullPointerException не проверяемое исключение?
    #39749428
Озверин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
забыл ник, а мне понравился сахар из ссылки, которую я привел:

https://github.com/hgwood/java8-streams-and-exceptions/blob/master/src/test/java/me/hgwood/bulky/BulkyTest.java

Например:

Код: java
1.
2.
3.
4.
5.
6.
7.
@Test public void discarding_returns_all_result_successfully_computed() {
        Collection<URI> result = uris.stream()
            .map(lazy(URI::create))
            .collect(discarding(IllegalArgumentException.class))
            .collect(toList());
        assertThat(result, contains(URI.create(uris.get(0)), URI.create(uris.get(1)), URI.create(uris.get(3))));
    }
...
Рейтинг: 0 / 0
Почему NullPointerException не проверяемое исключение?
    #39749430
Озверин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123забыл ник,
За пример спасибо. Уважаю.
А про goto ты неправ.
Вот тут спорят про что 7 страниц?
...
Используете вы Optional ?
...
Все используют?

да тут особо не спорят, так как использовать исключения или нет и как вернуть результат - вопрос вкусовщины. Просто делятся удобством и своим видением.
...
Рейтинг: 0 / 0
Почему NullPointerException не проверяемое исключение?
    #39749435
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
забыл никЕсли 4 года назад это были Spring, Hibernate, реляционки, то сейчас как минимум в половине случаев это стримы, спарк, ML, nosql и микросервисы и чем дальше, тем процент таких проектов увеличивается.
Реляционки уже сколько хоронят?
Ладно.
Дождемся когда хотя бы тут в форуме процент вырастет.
...
Рейтинг: 0 / 0
Почему NullPointerException не проверяемое исключение?
    #39749436
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Озверинда тут особо не спорятугу. Пока я не попросил код и чел обиделся.
...
Рейтинг: 0 / 0
Почему NullPointerException не проверяемое исключение?
    #39749437
Озверин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А если взять конкретный случай, что надо все посчитать и вернуть успешно сделанные и ошибку:

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
@Test public void throwingAtEnd_throws_an_exception_containing_both_all_successfully_computed_results_and_all_thrown_exceptions() {
        try {
            uris.stream()
                .map(lazy(URI::create))
                .collect(throwingAtEnd(IllegalArgumentException.class));
            fail();
        } catch (FailAtEndCollectException e) {
            assertThat(e.getCauses(), contains(
                instanceOf(IllegalArgumentException.class),
                instanceOf(IllegalArgumentException.class)));
            assertThat(e.getResults(), contains(URI.create(uris.get(0)), URI.create(uris.get(1)), URI.create(uris.get(3))));
        }
    }



вернет все успешное и все фейлы. Прикольно, что из названий сразу понятно, КАК отработает метод..довольно декларативненько.
...
Рейтинг: 0 / 0
Почему NullPointerException не проверяемое исключение?
    #39749444
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Озверинзабыл ник, а мне понравился сахар из ссылки, которую я привел:

https://github.com/hgwood/java8-streams-and-exceptions/blob/master/src/test/java/me/hgwood/bulky/BulkyTest.java

Например:

Код: java
1.
2.
3.
4.
5.
6.
7.
@Test public void discarding_returns_all_result_successfully_computed() {
        Collection<URI> result = uris.stream()
            .map(lazy(URI::create))
            .collect(discarding(IllegalArgumentException.class))
            .collect(toList());
        assertThat(result, contains(URI.create(uris.get(0)), URI.create(uris.get(1)), URI.create(uris.get(3))));
    }



Согласен, как по мне то выглядит неплохо. Но с этим подходом(именно в Java) есть один косяк, именно из-за checked exceptions. Почитать можно тут - https://www.baeldung.com/java-sneaky-throws И проблема тут не в том, что некоторые нужные checked exception подавляются(ибо я против них в принципе), но то что код становится так сказать неконсистентным. Ну это лирика.
...
Рейтинг: 0 / 0
Почему NullPointerException не проверяемое исключение?
    #39749445
lleming
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
просто совпало (сегодня на почту пришло почитать)
https://medium.com/@johnmcclean/dysfunctional-programming-in-java-5-no-exceptions-5f37ac594323
...
Рейтинг: 0 / 0
Почему NullPointerException не проверяемое исключение?
    #39749448
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123забыл никЕсли 4 года назад это были Spring, Hibernate, реляционки, то сейчас как минимум в половине случаев это стримы, спарк, ML, nosql и микросервисы и чем дальше, тем процент таких проектов увеличивается.
Реляционки уже сколько хоронят?
Ладно.
Дождемся когда хотя бы тут в форуме процент вырастет.
Опять узко смотришь. Реляционки никуда не уйдут, просто они будут работать в конкретных кейсах. На большинстве проектов вполне стандартной является ситуация когда юзают реляционку, Cassandra, kafka и redis какой-нибудь - и хадуп\спарк для аналитики но уже в warehouse. Мир не стоит на месте.
Вообще мейнстрим сейчас вроде как event sourcing и derivative systems. Схема такая - в систему приходят команды, они валидируются и если все ок, то создаются ивенты, эти ивенты рассылаются в производные системы аля реляционка, elsticsearch и message broker, которыевыступают по факту в качестве materialized views с предпоготовленными данными для определенных типов query
...
Рейтинг: 0 / 0
Почему NullPointerException не проверяемое исключение?
    #39749451
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
забыл никкуда деть тучу spring-еров
А спринг тоже что ли... Уже всё? Поясни плиз.
...
Рейтинг: 0 / 0
Почему NullPointerException не проверяемое исключение?
    #39749457
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
забыл никСхема такая - в систему приходят команды, они валидируются и если все ок, то создаются ивенты, эти ивенты рассылаются в производные системы аля реляционка, elsticsearch и message broker,разумеется есть специализация.
Я более грубо делил на прикладников и системщиков.
Вот прикладники программисты и не перейдут никогда на noSQL и микросервисы.
А прикладники это большой процент.
Ты огульно их goto обозвал.
Со стримами позже увидим. Они особый подход требуют.
Ака linq в шарпе.
Тут я не категоричен.
...
Рейтинг: 0 / 0
Почему NullPointerException не проверяемое исключение?
    #39749458
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123забыл никкуда деть тучу spring-еров
А спринг тоже что ли... Уже всё? Поясни плиз.

Нет, конечно. Spring Boot пока в тренде, да и в принципе spring начинет переходить на reactive way. Но, на мой взгляд, это как оракл бы вдруг решил стать nosql. Какое-то применение все это найдет, сособенно учитывая тонну javистов и на первых порах, но в перспективе я ставлю что его популярность будет сходить и на смену должен придти другой инструмент. Hibernate когда то тоже казался могучим и непоколебимым
...
Рейтинг: 0 / 0
Почему NullPointerException не проверяемое исключение?
    #39749459
Озверин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
забыл ник, event source`инг может и мейнстрим, но в 99% случаев он будет является оверхедом для корпоративных систем. Слишком сложен он.
...
Рейтинг: 0 / 0
Почему NullPointerException не проверяемое исключение?
    #39749464
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
llemingпросто совпало (сегодня на почту пришло почитать)
https://medium.com/@johnmcclean/dysfunctional-programming-in-java-5-no-exceptions-5f37ac594323

Ну вот именно об этом я и говорю
...
Рейтинг: 0 / 0
Почему NullPointerException не проверяемое исключение?
    #39749467
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Озверин,
Согласен, сложен он)
...
Рейтинг: 0 / 0
Почему NullPointerException не проверяемое исключение?
    #39749469
Озверин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
забыл никPetro123пропущено...

А спринг тоже что ли... Уже всё? Поясни плиз.

Нет, конечно. Spring Boot пока в тренде, да и в принципе spring начинет переходить на reactive way. Но, на мой взгляд, это как оракл бы вдруг решил стать nosql. Какое-то применение все это найдет, сособенно учитывая тонну javистов и на первых порах, но в перспективе я ставлю что его популярность будет сходить и на смену должен придти другой инструмент. Hibernate когда то тоже казался могучим и непоколебимым

да ну как-то я сомневаюсь. Спирнг 2.0+ - впитал в себя реактив вэй - стал чрезвычайно легковесным, перешел на нетти дефолтом, очень прост. Его то толком и заменить нечем в продакшене.
...
Рейтинг: 0 / 0
Почему NullPointerException не проверяемое исключение?
    #39749474
Озверин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Со стримами позже увидим. Они особый подход требуют.
Ака linq в шарпе.
Тут я не категоричен.

на стримы все перейдут - все таки декларативный (хотя бы вид) кода много облегчает его понимание.

конструкция вида list.map.collect понятнее и безопаснее, чем итерирование по коллекциям с вопросом "что же там в цикле происходит такое?".
...
Рейтинг: 0 / 0
Почему NullPointerException не проверяемое исключение?
    #39749476
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я думаю, цикл смены технологий это лет 5 минимум.
Вот и считаем.
Причем, 100 процентов в прошлые 5 лет никто не угадал что есть сейчас)).
Поэтому и сейчас, поосторожнее с прогнозами).
Имхо.
...
Рейтинг: 0 / 0
Почему NullPointerException не проверяемое исключение?
    #39749478
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Озверинна стримы все перейдутне верю.
В шарпе на linq все перешли?
30 - 50%, но потом опять новое подошло.
Счас аналог апплетов готовят webAssembly)))
...
Рейтинг: 0 / 0
Почему NullPointerException не проверяемое исключение?
    #39749482
Озверин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Озверинна стримы все перейдутне верю.
В шарпе на linq все перешли?
30 - 50%, но потом опять новое подошло.
Счас аналог апплетов готовят webAssembly)))

причем тут linq? Если ты думаешь, что стримы сложные для освоения - срочно погугли, освой их за 1-2 часа достаточно, чтобы забыть о сложности.
...
Рейтинг: 0 / 0
Почему NullPointerException не проверяемое исключение?
    #39749484
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Озверин,
Если ты знаешь linq, то это то же самое. Разве нет?
...
Рейтинг: 0 / 0
Почему NullPointerException не проверяемое исключение?
    #39749486
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
оциОзверинзабыл ник, event source`инг может и мейнстрим, но в 99% случаев он будет является оверхедом для корпоративных систем. Слишком сложен он.
Тут все гораздо сложнее. Надо учитывать несколько факторов
1) Я имею ввиду именно корпорации, а не Рога и Копыта с учеткой продаж. Во втором случае конечно это overkill
2) Мейнстрим это не значит only one way, и в данный момент идет практическое распознвание ограничений и преимуществ этой модели,как когда-то это было с nosql, бигдата и тд
3) Учитывай что тулы и техники для cqrs\event sourcing не так совершенны и обкатаны. Сама идея то простая до безобразия. Вся сложность техническая.
4) Если брать корпорации или высоконагруженные приложения, то основная проблема в неконсистентности моделей данных, вытекающие из распределнности приложений и требований availability\failover. Сложность поддержки систем в консистентном состоянии намного превышает сложность разработки event-sourcing приложений. Двумя большими плюсами являются a) у нас есть один source of true в системе б) то что система хранит историю, и ее можно "проиграть" заново, в случае ошибки или изменения бизнес логики. В случае традиционных систем - данные это некий снепшот, который ни откатить ни проиграть заново не получится.
5) Большинство инфраструктур уходит в облако и опять же это накладывает некоторые ограничения на стандартную модель.

В целом я ожидаю появления инструментов интеграции, в которых декларативно описывается воркфлоу - ивент приходит в систему и идет туда-то, создает такой-то индекс для такого тоquery, сюда идет бэкап. Тут вот стриминг и батч аналитика и тд. Но все данныепо факту производные от первоначального ивента и это отметает кучу проблем, с которыми сталкиваются современные системы. Но это лишь my view конечно же
...
Рейтинг: 0 / 0
Почему NullPointerException не проверяемое исключение?
    #39749487
Озверин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Озверин,
Если ты знаешь linq, то это то же самое. Разве нет?

э - совершенно другое. Это про функциональный стиль работы с коллекциями в яве.
...
Рейтинг: 0 / 0
Почему NullPointerException не проверяемое исключение?
    #39749488
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Озверинlist.map.collect понятнее и безопаснее, чем итерирование по коллекциям с вопросом "что же там в цикле происходит такое?".
Я не против твое строчки.
Это всего пребразование и филтрация коллекции.
Аналог linq в шарпе.
А бизнес логику в for куда девать?
...
Рейтинг: 0 / 0
Почему NullPointerException не проверяемое исключение?
    #39749492
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Озверин
да ну как-то я сомневаюсь. Спирнг 2.0+ - впитал в себя реактив вэй - стал чрезвычайно легковесным, перешел на нетти дефолтом, очень прост. Его то толком и заменить нечем в продакшене.

Ну я всего лишь выразил свое мнение, как оно будет посмотрим)
...
Рейтинг: 0 / 0
Почему NullPointerException не проверяемое исключение?
    #39749495
Озверин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Озверинlist.map.collect понятнее и безопаснее, чем итерирование по коллекциям с вопросом "что же там в цикле происходит такое?".
Я не против твое строчки.
Это всего пребразование и филтрация коллекции.
Аналог linq в шарпе.
А бизнес логику в for куда девать?

можно в анонимных функциях описывать внутри, можно выносить в отдельные ф-ии - все тоже самое, что и for, только "переходные" фазы(map, collect) описаны в декларативном виде, а значит итог выполнения конструкции гораздо прозрачнее.
...
Рейтинг: 0 / 0
Почему NullPointerException не проверяемое исключение?
    #39749498
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Озверинэ - совершенно другое. Это про функциональный стиль работы с коллекциями в яве.
Linq:
Код: java
1.
var coll = collection1.where(t => coll2.where(coll2 => coll2.id == collection1.id).Any())


Это типа join пересечение двух коллекций.
...
Рейтинг: 0 / 0
Почему NullPointerException не проверяемое исключение?
    #39749499
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123А бизнес логику в for куда девать?
Ну так мы же наоборот от for уходим в сторону декларативного программирования.
map, filter и тд - можешь рассматривать это как выделение паттерна, используемого миллион раз в каждом приложении. написанный раз и навсегда. Просто никто не описал это в стиле Gof, и тому подобным. Надо перебрать коллекцию и преобразовать каждый элемент? - тебе map, надо отделить данные по какому-то критерию - filter и т.д. В том то и дело что тебе остается только реализовать свою бизнес логику, не захламленную итерациями и проверками на нул
...
Рейтинг: 0 / 0
Почему NullPointerException не проверяемое исключение?
    #39749503
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Озверин,
Раньше слово декларативно означало конфигурацию напр. в XML.
Может что и поменялось с тех пор).
...
Рейтинг: 0 / 0
Почему NullPointerException не проверяемое исключение?
    #39749505
Alexey Tomin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Если бы вы были ближе к народу, программистам, коду. Я бы вас понял).

Куда уж ближе.
Ежедневно заталкиваю вытекшие глаза обратно и превращаю кошмар в читаемый код.

Не самое плохое, но по теме (код не копирую, а пишу по мотивам):
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
  List<A> source = ...;
  Map<A, Z> result = new HashMap<>();
  Map<A, String> rejectReasons = new hashMap<>();
  for (A a : source) {
     String rejectReason = getSomeRejectReason(a);
     if (rejectReason != null) {
        rejectReasons.put(a, rejectReason);
        continue;
     }
     B b;
     try {
       b = ....;
     } catch (Exception e) {
        rejectReasons.put(a, e.getMessage());
        continue;
     }
     ...
     result.put(a, z);
  }
  return new Tupple<>(result, rejectReasons);



Я не буду объяснять, насколько проще будет с Either
Просто mapRight и mapRight
...
Рейтинг: 0 / 0
Почему NullPointerException не проверяемое исключение?
    #39749509
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
забыл никPetro123А бизнес логику в for куда девать?
Ну так мы же наоборот от for уходим в сторону декларативного программирования.
map, filter и тд - можешь рассматривать это как выделение паттерна, используемого миллион раз в каждом приложении. написанный раз и навсегда. Просто никто не описал это в стиле Gof, и тому подобным. Надо перебрать коллекцию и преобразовать каждый элемент? - тебе map, надо отделить данные по какому-то критерию - filter и т.д. В том то и дело что тебе остается только реализовать свою бизнес логику, не захламленную итерациями и проверками на нулвсе это есть в linq и уже прошло.
Я не сильный спец в шарпе, но MS уже не рекомендует пихать linq во все дыры и заменять for на collection.for(b => b.сумма++).
Это просто займет небольшую нишу в проектах.
...
Рейтинг: 0 / 0
Почему NullPointerException не проверяемое исключение?
    #39749510
Озверин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Озверин,
Раньше слово декларативно означало конфигурацию напр. в XML.
Может что и поменялось с тех пор).

да по моему давно декларативно обозначает, что делается, а не как.
...
Рейтинг: 0 / 0
Почему NullPointerException не проверяемое исключение?
    #39749512
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey Tomin,
Ну вот и спасибо. Посмотрю.
...
Рейтинг: 0 / 0
Почему NullPointerException не проверяемое исключение?
    #39749514
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Озверин,
Через какую нотацию и ЯП?
А то блин, одно и то же но в java зовут аннотации, а в шарпе атрибутами.
...
Рейтинг: 0 / 0
Почему NullPointerException не проверяемое исключение?
    #39749515
Озверин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Озверинэ - совершенно другое. Это про функциональный стиль работы с коллекциями в яве.
Linq:
Код: java
1.
var coll = collection1.where(t => coll2.where(coll2 => coll2.id == collection1.id).Any())


Это типа join пересечение двух коллекций.

это же язык запроса к рсубд. Причем тут стримы?
...
Рейтинг: 0 / 0
Почему NullPointerException не проверяемое исключение?
    #39749521
Озверин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Озверин,
Через какую нотацию и ЯП?
А то блин, одно и то же но в java зовут аннотации, а в шарпе атрибутами.

я не очень понял, к чему этот вопрос.
...
Рейтинг: 0 / 0
Почему NullPointerException не проверяемое исключение?
    #39749527
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ОзверинPetro123пропущено...

Linq:
Код: java
1.
var coll = collection1.where(t => coll2.where(coll2 => coll2.id == collection1.id).Any())



Это типа join пересечение двух коллекций.

это же язык запроса к рсубд. Причем тут стримы?
А чем коллекция отличается от запроса в базу если есть ОРМ?
Вот так пойдет?
var coll2 = coll1.Intersect(col3)
Без бд. В оперативке.
...
Рейтинг: 0 / 0
Почему NullPointerException не проверяемое исключение?
    #39749530
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ОзверинPetro123Озверин,
Через какую нотацию и ЯП?
А то блин, одно и то же но в java зовут аннотации, а в шарпе атрибутами.

я не очень понял, к чему этот вопрос.к тому что не очень понятно как перенести мой юз кейс на прошлой странице через стримы декларативно.
Не вижу декларативности.
Вот декларативное управление транзакциями было видно по атрибутам над методом.
...
Рейтинг: 0 / 0
Почему NullPointerException не проверяемое исключение?
    #39749541
Озверин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Озверинпропущено...


это же язык запроса к рсубд. Причем тут стримы?
А чем коллекция отличается от запроса в базу если есть ОРМ?
Вот так пойдет?
var coll2 = coll1.Intersect(col3)
Без бд. В оперативке.

чтобы ответить на этот вопрос, мне надо будет узнать гораздо подробнее, что такое linq $)
...
Рейтинг: 0 / 0
Почему NullPointerException не проверяемое исключение?
    #39749548
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Озверин,
Код: java
1.
listOfCompany.Where(c=> c.id > 123).ToList().ForEach(cc => cc.Name =  "Вася")


На понимаю чего все ополчились на for.
Вот по вашему мнению декларативно вместо for.
Он просто там внутри спрятан).
Пройтись по стриму, отфильтровав и присвоить имя Вася.
...
Рейтинг: 0 / 0
Почему NullPointerException не проверяемое исключение?
    #39749550
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Озверин
чтобы ответить на этот вопрос, мне надо будет узнать гораздо подробнее, что такое linq $)

Linq это была первая попытка отделить источник данных от метода его обработки. В скале аналогом является slick
То есть по факту ты работаешь с базой данных как с коллекцией данных,
users.map(_name = ..).filter(id > 10) а система преобразует это в
select * from users where id > 10 and name = ...
В том числе поддерживаются join, groupBy и тд плюшки. Концепт очень мощный. Причем чисто теоретически ты можешь построить такую абстракцию над любым источником данных, будь то XML файл или рекорд в БД или объектв памяти итд.
...
Рейтинг: 0 / 0
Почему NullPointerException не проверяемое исключение?
    #39749551
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Озверинчтобы ответить на этот вопрос, мне надо будет узнать гораздо подробнее, что такое linq $)тогда я скажу что стрим это linq, и хайп там уже прошел, а ты не спорь.
Это моё имхо)
...
Рейтинг: 0 / 0
Почему NullPointerException не проверяемое исключение?
    #39749553
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
забыл ник,
Да.
Только есть linq to sql, linq to Object и еще куча всяких как у спринга.
...
Рейтинг: 0 / 0
Почему NullPointerException не проверяемое исключение?
    #39749555
Озверин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
забыл никОзверинчтобы ответить на этот вопрос, мне надо будет узнать гораздо подробнее, что такое linq $)

Linq это была первая попытка отделить источник данных от метода его обработки. В скале аналогом является slick
То есть по факту ты работаешь с базой данных как с коллекцией данных,
users.map(_name = ..).filter(id > 10) а система преобразует это в
select * from users where id > 10 and name = ...
В том числе поддерживаются join, groupBy и тд плюшки. Концепт очень мощный. Причем чисто теоретически ты можешь построить такую абстракцию над любым источником данных, будь то XML файл или рекорд в БД или объектв памяти итд.

суть абстракции я понял/ Внешне - пока мало чем отличается, кроме ключевых слов.
...
Рейтинг: 0 / 0
Почему NullPointerException не проверяемое исключение?
    #39749557
Озверин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Озверинчтобы ответить на этот вопрос, мне надо будет узнать гораздо подробнее, что такое linq $)тогда я скажу что стрим это linq, и хайп там уже прошел, а ты не спорь.
Это моё имхо)

да ты можешь скзаать что угодно ;)
...
Рейтинг: 0 / 0
Почему NullPointerException не проверяемое исключение?
    #39749568
Озверин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Озверин,
Код: java
1.
listOfCompany.Where(c=> c.id > 123).ToList().ForEach(cc => cc.Name =  "Вася")


На понимаю чего все ополчились на for.
Вот по вашему мнению декларативно вместо for.
Он просто там внутри спрятан).
Пройтись по стриму, отфильтровав и присвоить имя Вася.

честно сказать, что тут происходит - я сразу не могу понять.
То есть снаала мы отбираем по коду>123, потом собираем в list, а что потом происходит? Понятно, что типа перебираем, но что будет итогом и для чего - не очень понятно.
...
Рейтинг: 0 / 0
Почему NullPointerException не проверяемое исключение?
    #39749579
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Озверин,
Да. Только если бд, то ленивость и запрос не пойдет пока не написан toList
Внутри ForEach если перейти в кишки линка обычный for))))

Код: java
1.
2.
3.
For 0... Count{
cc.Name =  "Вася";
} 
...
Рейтинг: 0 / 0
Почему NullPointerException не проверяемое исключение?
    #39749580
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Озверини для чего - не очень понятно.ты пел за декларативность без for.
Это оно.
...
Рейтинг: 0 / 0
Почему NullPointerException не проверяемое исключение?
    #39749582
Озверин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Озверини для чего - не очень понятно.ты пел за декларативность без for.
Это оно.

а теперь своими словами, что эта конструкция делает?
...
Рейтинг: 0 / 0
Почему NullPointerException не проверяемое исключение?
    #39749583
Озверин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ОзверинPetro123пропущено...
ты пел за декларативность без for.
Это оно.

а теперь своими словами, что эта конструкция делает?

listOfCompany.Where(c=> c.id > 123).ToList().ForEach(cc => cc.Name = "Вася")
...
Рейтинг: 0 / 0
Почему NullPointerException не проверяемое исключение?
    #39749586
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Озверин,

Выше сказал.
Фильтрует коллекцию по айдишникам и всем присваивает чере for имя Вася
...
Рейтинг: 0 / 0
Почему NullPointerException не проверяемое исключение?
    #39749607
chpasha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ОзверинlistOfCompany.Where(c=> c.id > 123).ToList().ForEach(cc => cc.Name = "Вася")

Код: java
1.
2.
3.
listOfCompany.stream()
                   .filter(c -> c.id > 123)
                   .forEach(c -> c.setName("Вася")



но записано так, чтоб враги не догадались
...
Рейтинг: 0 / 0
Почему NullPointerException не проверяемое исключение?
    #39749617
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chpashaно записано так, чтоб враги не догадались
вот именно))).
Тут главное не переборщить в производстве с коротким кодом.
Например, в where вместо двух равно поставить одно и коллекция будет испорчена..... Декларативно.
...
Рейтинг: 0 / 0
Почему NullPointerException не проверяемое исключение?
    #39749621
chpasha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Тут главное не переборщить
это универсальный совет, годящийся для всего ;)
...
Рейтинг: 0 / 0
Почему NullPointerException не проверяемое исключение?
    #39749623
Озверин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chpashaОзверинlistOfCompany.Where(c=> c.id > 123).ToList().ForEach(cc => cc.Name = "Вася")

Код: java
1.
2.
3.
listOfCompany.stream()
                   .filter(c -> c.id > 123)
                   .forEach(c -> c.setName("Вася")



но записано так, чтоб враги не догадались

да. мой глаз не мог зацепиться из-за отсутствия setName()

Petro123Озверин,

Выше сказал.
Фильтрует коллекцию по айдишникам и всем присваивает чере for имя Вася

ни в шарпе forEach не относится к linq, ни в java - к stream. Зачем приводить его в пример?
Надо же сравнивать старый способ и новый


Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
String[] companies = {"Sam", "C", "Asdf", "Ddfgf"};
    List<Integer> companyNameLengthMoreThan3List = Arrays.stream(companies)
        .filter(e -> e.length() > 3)
        .map(String::length)
        .collect(Collectors.toList());


String[] companies = {"Sam", "C", "Asdf", "Ddfgf"};
    List<Integer> companyNameLengthMoreThan3List = new ArrayList<>();
    for (String company : companies) {
      if (company.length() > 3) {
        companyNameLengthMoreThan3List.add(company.length());
      }
    }



При анализе кода я гораздо быстрее пойму, что делает первый блок, нежели второй. А вот как он это делает - я буду понимать примерно с одинаковым кол-вом времени. То есть при беглом анализе кода мне удобнее читать стримы.
...
Рейтинг: 0 / 0
Почему NullPointerException не проверяемое исключение?
    #39749625
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Озверин
Код: java
1.
2.
3.
4.
5.
String[] companies = {"Sam", "C", "Asdf", "Ddfgf"};
    List<Integer> companyNameLengthMoreThan3List = Arrays.stream(companies)
        .filter(e -> e.length() > 3)
        .map(String::length)
        .collect(Collectors.toList());





и для примера на скале -

Код: java
1.
    val companyNameLengthMoreThan3List = List("Sam", "C", "Asdf", "Ddfgf").filter(._length > 3).map(_.length)
...
Рейтинг: 0 / 0
Почему NullPointerException не проверяемое исключение?
    #39749630
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Озверин
Код: java
1.
companyNameLengthMoreThan3List.add(company.length());

ну, если бизнес логика в одну строку перебросить коллекцию, тогда вполне читабельно).
...
Рейтинг: 0 / 0
Почему NullPointerException не проверяемое исключение?
    #39749632
Озверин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Озверин
Код: java
1.
companyNameLengthMoreThan3List.add(company.length());

ну, если бизнес логика в одну строку перебросить коллекцию, тогда вполне читабельно).

а гиде фильтрация по длине имени компании? Вопрос же не в кол-ве строк.
...
Рейтинг: 0 / 0
Почему NullPointerException не проверяемое исключение?
    #39749638
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Озверин,
Изначально вопрос был про райзе.
Я так понимаю, что при фильтрации его не будет.
Значит спокойно фильтруй стримами.
А потом уже for вместе с райзе и сложной БЛ.
...
Рейтинг: 0 / 0
Почему NullPointerException не проверяемое исключение?
    #39749641
Озверин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Озверин,
Изначально вопрос был про райзе.
Я так понимаю, что при фильтрации его не будет.
Значит спокойно фильтруй стримами.
А потом уже for вместе с райзе и сложной БЛ.

а зачем тут for()? O-o
...
Рейтинг: 0 / 0
Почему NullPointerException не проверяемое исключение?
    #39749646
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ОзверинPetro123Озверин,
Изначально вопрос был про райзе.
Я так понимаю, что при фильтрации его не будет.
Значит спокойно фильтруй стримами.
А потом уже for вместе с райзе и сложной БЛ.

а зачем тут for()? O-o
Отсюда:
автормое имхо что опшионалы тут не вижу чем помогут.
Если я пропустил или возбудил исключительную на 10м уровне стека, то все 5 тысяч строк кода я не просматриваю.
Ловлю возле for и всё.
Имхо.
Можешь не рассматривать.
Юз кейс в продакшене у меня такой.
...
Рейтинг: 0 / 0
Почему NullPointerException не проверяемое исключение?
    #39749647
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну а так как при работе со стримами обработка исключений стала другой, все стали доказывать что все перейдут на стримы.
Поживем увидим.
...
Рейтинг: 0 / 0
Почему NullPointerException не проверяемое исключение?
    #39749653
Озверин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123мое имхо что опшионалы тут не вижу чем помогут.
Если я пропустил или возбудил исключительную на 10м уровне стека, то все 5 тысяч строк кода я не просматриваю.
Ловлю возле for и всё.

Юз кейс в продакшене у меня такой.

Ну так я ж приводил пример - напиши свой коллектор, пусть он бросает exception - в чем проблема? Универсальный реюзабельный код, что еще надо?


Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
@Test public void upToAndThrow_throws_an_exception_containing_both_the_cause_and_the_results_successfully_computed_before_the_failure() {
        try {
            uris.stream()
                .map(lazy(URI::create))
                .collect(upToAndThrow(IllegalArgumentException.class));
            fail();
        } catch (FailFastCollectException e) {
            assertThat(e.getCause(), instanceOf(IllegalArgumentException.class));
            assertThat(e.getResults(), contains(URI.create(uris.get(0)), URI.create(uris.get(1))));
        }
    }
...
Рейтинг: 0 / 0
Почему NullPointerException не проверяемое исключение?
    #39749672
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Озверин,
Хммм.
У нас же коллекция заканчивается на второй строке for.
Далее вся работа не с коллекцией стримом, а с объектом из этой коллекции. Уходит в стек на глубину 10 методов.
Ничего не выигрываем.
Если в спринге транзакции и аннотации вешаются на весь стек, то тут ничем не выигрываем.
...
Рейтинг: 0 / 0
Почему NullPointerException не проверяемое исключение?
    #39749677
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторR collect​(Collector collector)
Один из самых мощных операторов Stream API. С его помощью можно собрать все элементы в список, множество или другую коллекцию, сгруппировать элементы по какому-нибудь критерию, объединить всё в строку и т.д.. В классе java.util.stream.Collectors очень много методов на все случаи жизни, мы рассмотрим их позже. При желании можно написать свой коллектор, реализовав интерфейс Collector.это типа паттерна визитор, для обработки коллекции.
Другой юзкейс.
...
Рейтинг: 0 / 0
Почему NullPointerException не проверяемое исключение?
    #39749680
Озверин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Озверин,
Хммм.
У нас же коллекция заканчивается на второй строке for.
Далее вся работа не с коллекцией стримом, а с объектом из этой коллекции. Уходит в стек на глубину 10 методов.
Ничего не выигрываем.
Если в спринге транзакции и аннотации вешаются на весь стек, то тут ничем не выигрываем.

мне иногда кажется, что я общаюсь с генератором случайных фраз..транзакции и аннотации тут причем?
...
Рейтинг: 0 / 0
Почему NullPointerException не проверяемое исключение?
    #39749682
Озверин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123авторR collect​(Collector collector)
Один из самых мощных операторов Stream API. С его помощью можно собрать все элементы в список, множество или другую коллекцию, сгруппировать элементы по какому-нибудь критерию, объединить всё в строку и т.д.. В классе java.util.stream.Collectors очень много методов на все случаи жизни, мы рассмотрим их позже. При желании можно написать свой коллектор, реализовав интерфейс Collector.это типа паттерна визитор, для обработки коллекции.
Другой юзкейс.

только именно коллектор может собрать воедино все нужные тебе результаты и пробросить исключение.
...
Рейтинг: 0 / 0
Почему NullPointerException не проверяемое исключение?
    #39749692
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Озверинмне иногда кажется, что я общаюсь с генератором случайных фраз..транзакции и аннотации тут причем?ты не видишь аналогии, а я вижу.

Озверинтолько именно коллектор может собрать воедино все нужные тебе результаты и пробросить исключение.
Ты путаешь задачи.
Юзкейс выше это не сбор результатов, а запись пришедшей коллекции в базу или веб сервис.
Паттерн визитор собирает все результаты.
...
Рейтинг: 0 / 0
Почему NullPointerException не проверяемое исключение?
    #39749837
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey Tomin
Код: sql
1.
2.
3.
4.
5.
6.
7.
List<A> source = ...;
  for (A a : source) {
   if (! isValidObject(a)) continue;
     ...
     result.put(a, z);
  }
  return new Tupple<>(result, rejectReasons);


?
...
Рейтинг: 0 / 0
Почему NullPointerException не проверяемое исключение?
    #39749843
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Alexey Tomin
Код: sql
1.
2.
  for (A a : source) {
   if (! isValidObject(a)) continue;

?Стандартный способ пропустить остаток цикла, не запихивая его в (не)длинный if.
В чём проблемы-то?
...
Рейтинг: 0 / 0
Почему NullPointerException не проверяемое исключение?
    #39749854
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorov,
В том что вместо стандартного тюнинга кода, он был переписан на стримы как единственное и крутое решение.
...
Рейтинг: 0 / 0
Почему NullPointerException не проверяемое исключение?
    #39749874
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
"Моя-твоя-не-понимай".
Лично мне удобнее когда: "если нет, то досрочно выходим", вместо: "если да, то большущий вложенный блок кода".
...
Рейтинг: 0 / 0
Почему NullPointerException не проверяемое исключение?
    #39749877
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorov,
Ну тогда его ждем. Зачем он выложил тот кусок кода, и что этим показывает.
Можно было для наглядности: "было... Проблема... Стало...".
...
Рейтинг: 0 / 0
Почему NullPointerException не проверяемое исключение?
    #39749878
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorov"Моя-твоя-не-понимай".
Лично мне удобнее когда: "если нет, то досрочно выходим", вместо: "если да, то большущий вложенный блок кода".ну я так и написал. Мне тоже так удобнее.
...
Рейтинг: 0 / 0
Почему NullPointerException не проверяемое исключение?
    #39749910
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
забыл никPetro123Озверин,
О да!))) Микросервисы.
Тут 2 человека ими занимаются.
Причем я не ретроград, поверь).

Если я этого не вижу, значит этого нет(с).
Частью моих обязанностей является проведение интервью с внешними\внутренними программистами и техническая экспертиза проектов, с целью определить людей на подходящие для них проекты. Так вот, в моей конторе 500+ человек и около 30 проектов в разработке. Контора специализируется на жестком интерпрайзе для американского рынка. Если 4 года назад это были Spring, Hibernate, реляционки, то сейчас как минимум в половине случаев это стримы, спарк, ML, nosql и микросервисы и чем дальше, тем процент таких проектов увеличивается. Напомню, контора специализируется на энтерпрайзе. Так вот, сейчас огромный головняк, куда деть тучу spring-еров и обычных javистов. Проводим ускоренные курсы по ФП, стримам, микросервисам и бигдате, чтобы хоть как-то позакрывать вакансии.
Простите хотел уточнить о каких стримах речь и где вы в ентерпрайзе заюзали мл? Ну просто сугубо любопытства ради интересуюсь.

ЗЫ. Свичнуться со спринга на что то другое сложности не представляет везде яйца одни и те же с минимумом специфики
...
Рейтинг: 0 / 0
Почему NullPointerException не проверяемое исключение?
    #39749916
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreykaTПростите хотел уточнить о каких стримах речь и где вы в ентерпрайзе заюзали мл? Ну просто сугубо любопытства ради интересуюсь.

Речь об архитектуре вида https://mapr.com/ebooks/streaming-architecture/chapter-02-stream-based-architecture.html
Насчет ML -

1) вычленение полезной информации из рейтингов TV для последующей ее продажи
2) онлайн определение fraud transactions
3) Gaming -> определение стратегии победителей, вычленение и бан ботов(тут правда проект не совсем энтерпрайз)
4) Распознавание ювелирных украшений(чтобы можно было взять напрокат в одном пункте и сдать в другом, той же сети)
5) Определение того не собирается ли человек уволится по некоторым паттернам и соотвествующая реакция HR на это.

Конечно, ML не суется всегда и везде, но вот навскидку за последние пару месяцев. Да,это всего лишь мелкие части более крупных систем, но все же тенденция на лицо.
...
Рейтинг: 0 / 0
Почему NullPointerException не проверяемое исключение?
    #39749927
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreykaT,
Сначало этот хайп пошел из андроид гугла как реактивное программирование
https://www.google.com/search?newwindow=1&client=tablet-android-huawei&ei=EsQZXNbuBaOqrgT58ZKIBQ&q=android реактивное программирование&oq=android реактивное&gs_l=mobile-gws-wiz-serp.1.0.0j33i160.23868.30168..30934...0.0..0.212.2091.1j13j1......0....1.........0i71j35i39j0i20i263j0i67j0i131i20i263j0i22i30.XD0M8JAUju4
Под такое программирование нужно полностью переписать проект. Т. Е. лучше стартап.
...
Рейтинг: 0 / 0
Почему NullPointerException не проверяемое исключение?
    #39750320
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
забыл никandreykaTПростите хотел уточнить о каких стримах речь и где вы в ентерпрайзе заюзали мл? Ну просто сугубо любопытства ради интересуюсь.

Речь об архитектуре вида https://mapr.com/ebooks/streaming-architecture/chapter-02-stream-based-architecture.html

хм. не знал что это кто то выделил в отдельный тренд и на это оказывается нужно переучиваться. в общем то этот паттерн был описан емнип еще в 2003-м году чуваком писавшим книгу про интеграйшн паттернз. а появился он небось вообще годах так в 60-х. о. а теперь на это надо "переучиваться со спрингбута"....
это я вас не подкалываю. просто удивляюсь на что там переучиваться после спринга. это как сказать я умею ездить на машине теперь переучиваюсь копать грядки.

по мл да. вроде тема меня тоже пушат на работе ей заняться. а я как то вот не очень к ней предрасположен. и не вижу особого применения. точно так же со временем подохнет как блокчейн. поиграются да забудут.
...
Рейтинг: 0 / 0
Почему NullPointerException не проверяемое исключение?
    #39750428
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreykaTэто я вас не подкалываю. просто удивляюсь на что там переучиваться после спринга. это как сказать я умею ездить на машине теперь переучиваюсь копать грядки.

Ну я хз, конечно если иметь ввиду "программиста" в настоящем понимании, то да - язык и платформа всего лишь инструмент. Но дело в том, что вы удивитесь, но вокруг много формоклепателей, которые не видят дальше своего носа. И аббревиатура ACID ввергает их в шок, а когда они узнают что у БД есть уровни изоляции транзакций..

Так вот, стриминг все же тема посложнее на мой взгляд, чем вы ее пытаетесь представить,это совершенно другой подход к написанию приложений. Тут сразу приходит на ум знакомство с новыми вещами, такими как
1) Reactive patterns\Functional programming
2) EventSourcing\CQRS
3) Distributed consensus, partition, replication, availability
4) Windows, processing\event time]watermark
5) immutable log
и т.д. Которые вроде как сами по себе и не сложные и давно описанные, но если ты с ними не встречался то нужно время на усвоение
...
Рейтинг: 0 / 0
Почему NullPointerException не проверяемое исключение?
    #39750434
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cqrs должен в принципе быть везде. Это по-сути часть solid ну и все остальное - аналогично фундаментальные знания. Это теория которую должны знать все. Те кто не знают - ремесленники а не инженеры
...
Рейтинг: 0 / 0
Почему NullPointerException не проверяемое исключение?
    #39750614
Озверин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreykaTCqrs должен в принципе быть везде. Это по-сути часть solid ну и все остальное - аналогично фундаментальные знания. Это теория которую должны знать все. Те кто не знают - ремесленники а не инженеры

интересно, каким образом cqrs помогает придерживаться solid принципа?

Если у меня 2 endpoint`а:
post-/issues
get -/issues

я уже придерживаюсь cqrs паттерна или нет?
1. Таак, смотрим: моя программа имеет command interface(post метод) и query(get).
2. Мои интерфейсы без сайд эффектов

По-моему - типичная реализация сервиса в рамках rest архитектуры. Я что-то упускаю?
...
Рейтинг: 0 / 0
Почему NullPointerException не проверяемое исключение?
    #39750628
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Озверин,
Он загнул немного.
Можно даже по простому, на пальцах, посчитать упоминания CQRS на форуме.
Один раз за пятилетку.
...
Рейтинг: 0 / 0
Почему NullPointerException не проверяемое исключение?
    #39750654
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ОзверинandreykaTCqrs должен в принципе быть везде. Это по-сути часть solid ну и все остальное - аналогично фундаментальные знания. Это теория которую должны знать все. Те кто не знают - ремесленники а не инженеры

интересно, каким образом cqrs помогает придерживаться solid принципа?

Если у меня 2 endpoint`а:
post-/issues
get -/issues

я уже придерживаюсь cqrs паттерна или нет?
1. Таак, смотрим: моя программа имеет command interface(post метод) и query(get).
2. Мои интерфейсы без сайд эффектов

По-моему - типичная реализация сервиса в рамках rest архитектуры. Я что-то упускаю?
нет ты ничего не упускаешь. всё верно. рест соответствует скрс (на мой взгляд, если я еще не разучился понимать прочитанное). скрс это суть проекция понятия сингл респонсибилити.
...
Рейтинг: 0 / 0
Почему NullPointerException не проверяемое исключение?
    #39750659
Tsyklop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ребят. Я всего-то спросил про NPE, а вы 8 страниц наплодили)
...
Рейтинг: 0 / 0
Почему NullPointerException не проверяемое исключение?
    #39750673
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TsyklopРебят. Я всего-то спросил про NPE, а вы 8 страниц наплодили))))
NPE под призмой java8))
...
Рейтинг: 0 / 0
Почему NullPointerException не проверяемое исключение?
    #39750675
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreykaTрест соответствует скрс (на мой взгляд, если я еще не разучился понимать прочитанное). скрс это суть проекция понятия сингл респонсибилити.
Это до сервера. А на сервере тоже разделение на две модели и две базы. Чтения и записи.
Тот еще геморрой.
...
Рейтинг: 0 / 0
Почему NullPointerException не проверяемое исключение?
    #39750736
chpasha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tsyklopа вы 8 страниц наплодили)
в этом единственный интерес этого форума, хотя вот Настя считает, что он для того чтобы помогать ему/оно лабы писать
...
Рейтинг: 0 / 0
Почему NullPointerException не проверяемое исключение?
    #39750814
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TsyklopРебят. Я всего-то спросил про NPE, а вы 8 страниц наплодили)
Мы не виноваты. Это модераторы форум "просто треп" с сервера убрали.
Теперь любой форум, по мало-мальскому поводу в "просто треп" преврашается.
(за исключением форума "работа", в ним ничего не поменялось, он всегда "просто треп" дублировал ))) )
...
Рейтинг: 0 / 0
Почему NullPointerException не проверяемое исключение?
    #39750816
Озверин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonid KudryavtsevTsyklopРебят. Я всего-то спросил про NPE, а вы 8 страниц наплодили)
Мы не виноваты. Это модераторы форум "просто треп" с сервера убрали.
Теперь любой форум, по мало-мальскому поводу в "просто треп" преврашается.
(за исключением форума "работа", в ним ничего не поменялось, он всегда "просто треп" дублировал ))) )

не, ну тут все таки треп за технически темы...
...
Рейтинг: 0 / 0
Почему NullPointerException не проверяемое исключение?
    #39750839
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonid Kudryavtsev,
Не убрали.
Для регистрированных он есть.
И на java ветке треп невозможен. Контингент не тот).
Тут люди работают) и айкю повышенный)
...
Рейтинг: 0 / 0
Почему NullPointerException не проверяемое исключение?
    #39750868
chpasha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonid KudryavtsevТеперь любой форум
здесь так всегда было - в том и интерес, обсудить тему, узнать что-то новое. а для "как сделать xxx в yyy" уже все ответы на stackoverflow есть
...
Рейтинг: 0 / 0
190 сообщений из 190, показаны все 8 страниц
Форумы / Java [игнор отключен] [закрыт для гостей] / Почему NullPointerException не проверяемое исключение?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]