Сергей А. Копылов @sergeykopylov
Java разработчик
Information
- Rating
- Does not participate
- Location
- Москва, Москва и Московская обл., Россия
- Registered
- Activity
Specialization
Backend Developer
Lead
From 250,000 ₽
Java
Git
OOP
Docker
Database
Java разработчик
Try не обрабатывает null значения, Optional не умеет перехватывать исключения, XResult делает и то, и другое
Думаю нет. Классики рекомендуют использовать Optional в основном как возвращаемое значение функции, то же самое будет справедливо для XResult.
Спасибо, правильно ;)
Совершенно верно. Для виртуальных потоков нужно писать прямой последовательный код без всякой реактивщины. И этот факт вызывает у меня восхищение.
В своей статье автор хотел
неявно выразить свою мечту о том что-бы простейшие функциональные примитивы (Try, Either и м.б. др.) были в составе стандартной библиотеки Java
явно указать на простой и ясный способ обработки исключений без использования внешних зависимостей, таких как vavr и других.
Да, будет лежать в Result. Но нет гарантий что на исключение посмотрят/извлекут. В этом смысле я говорил про потерю исключения.
Некоторая разница имеется - в Вашем варианте обработка стрима завершится на первом "плохом" URL, у меня при первом NullPointerException или другом не-проверяемом исключении.
Хотя я с Вами соглашусь, что перехватывать не-проверяемые исключения иногда необходимо.
Можно потерять или замаскировать NullPointerException, IllegalArgumentException и множество других багов. Но окончательное решение за Вами, я обрисовал лишь общую схему.
При пробросе исключения при помощи 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 репозитария.
Спасибо, интересно. Оказывается Вы тоже думали об этой проблеме