All streams
Search
Write a publication
Pull to refresh
14
0
Сергей А. Копылов @sergeykopylov

Java разработчик

Send message

На первый взгляд, не вижу разницы с Try

Try не обрабатывает null значения, Optional не умеет перехватывать исключения, XResult делает и то, и другое

Мне интересно, а в случае с опциональными полями класса предлагается тоже писать XResult?

Думаю нет. Классики рекомендуют использовать Optional в основном как возвращаемое значение функции, то же самое будет справедливо для XResult.

... Уж извольте делать код нечитабельным до конца Optional.of(port).filter(p -> p != -1)

Спасибо, правильно ;)

Совершенно верно. Для виртуальных потоков нужно писать прямой последовательный код без всякой реактивщины. И этот факт вызывает у меня восхищение.

В своей статье автор хотел

  • неявно выразить свою мечту о том что-бы простейшие функциональные примитивы (Try, Either и м.б. др.) были в составе стандартной библиотеки Java

  • явно указать на простой и ясный способ обработки исключений без использования внешних зависимостей, таких как vavr и других.

  1. Да, будет лежать в Result. Но нет гарантий что на исключение посмотрят/извлекут. В этом смысле я говорил про потерю исключения.

  2. Некоторая разница имеется - в Вашем варианте обработка стрима завершится на первом "плохом" URL, у меня при первом NullPointerException или другом не-проверяемом исключении.

Хотя я с Вами соглашусь, что перехватывать не-проверяемые исключения иногда необходимо.

  1. Можно потерять или замаскировать NullPointerException, IllegalArgumentException и множество других багов. Но окончательное решение за Вами, я обрисовал лишь общую схему.

  2. При пробросе исключения при помощи sneakyThrow обработка потока завершится на первом "плохом" URL. А мы хотим обработать все URL-ы. Так то так.

Увы, я думаю эта проблема выходит за рамки данной скромной библиотеки ;)

Верно, кстати ссылку на vavr я давал в конце статьи.

Есть как минимум пара различий между vavr и предлагаемой библиотекой

  • vavr перехватывает Throwable, в том числе исключения Error, моя библиотека - только Exception, выкидывая Error наружу, что соответствует общепринятым рекомендациям по обработке исключений.

  • в vavr сложно реализована работа с ресурсами (до восьми дополнительных классов билдеров), у меня - всем хорошо известный известный механизм try-with-resource

Виноват, вы смотрите не тот файл. Смотрите пожалуйста на

function/src/main/java/com/github/skopylov58/functional/Try.java

Файл, который Вы смотрели, из прежних итераций, я удалил их из репозитария.

Виноват, вы смотрите не тот файл. Смотрите пожалуйста на

function/src/main/java/com/github/skopylov58/functional/Try.java

Файл TryAutoCloseable из прежних итераций, я удалил его из git репозитария.

Спасибо, интересно. Оказывается Вы тоже думали об этой проблеме

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Registered
Activity

Specialization

Backend Developer
Lead
From 250,000 ₽
Java
Git
OOP
Docker
Database