К основному содержанию
скилл CX Codex

143-java-functional-exception-handling — скилл для Claude Code

Скилл переводит обработку ошибок в Java на монадические типы: Optional, VAVR Either, sealed-классы вместо исключений на каждый чих.

Установить в Claude Code · Через Skills CLI (Vercel) Все способы и платформы ↓
npx skills add jabrena/plinth --skill 143-java-functional-exception-handling -a claude-code
Открыть на GitHub

Что делает 143-java-functional-exception-handling

Скилл разбирает код на Java и меняет места, где исключения используются для обычных бизнес-сценариев. Вместо NotFoundException и NullPointerException появляются Optional<T> и VAVR Either<L,R>, для асинхронных цепочек — CompletableFuture<T>. Иерархии ошибок строятся на sealed-классах, records и enum с исчерпывающим сопоставлением по образцу.

Внутри — справочник references/143-java-functional-exception-handling.md с парами хороших и плохих примеров по каждой теме: композиция через flatMap/map/peek/peekLeft, дисциплина checked и unchecked исключений, цепочки причин, когда исключение всё же неизбежно. Логирование разделено: warn и info для бизнес-сбоев, error для системных.

Скилл требует Maven-проект в валидном состоянии: сначала ./mvnw validate или mvn validate, и если проверка падает, работа останавливается. Для Either нужны зависимости VAVR (io.vavr:vavr) и SLF4J — без них шаг не пройдёт. После правок запускается ./mvnw clean verify или mvn clean verify.

Какие задачи решает

  • заменить исключения на Optional и Either в бизнес-логике
  • построить иерархию ошибок на sealed-классах и enum
  • собрать цепочку операций, которые могут упасть, через flatMap
  • развести логирование бизнес-сбоев и системных отказов
  • привести в порядок checked и unchecked исключения в проекте

Примеры запросов агенту

  • Перепиши обработку ошибок в OrderService.java на функциональную: Optional и VAVR Either вместо исключений
  • Собери иерархию ошибок оплаты на sealed-классах с исчерпывающим сопоставлением
  • Прогони ./mvnw validate, потом примени функциональную обработку исключений и проверь сборку

Как установить 143-java-functional-exception-handling

1Через Skills CLI (Vercel)

npx skills add jabrena/plinth --skill 143-java-functional-exception-handling -a claude-code

2Вручную: положить файлы

~/.claude/skills/143-java-functional-exception-handling/SKILL.md

Папка скилла целиком; для одного проекта — .claude/skills/143-java-functional-exception-handling/

По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов

Вопросы о 143-java-functional-exception-handling

Как установить 143-java-functional-exception-handling в Claude Code?

Выполните npx skills add jabrena/plinth --skill 143-java-functional-exception-handling -a claude-code. Скилл окажется в ~/.claude/skills/143-java-functional-exception-handling/SKILL.md.

Что делает 143-java-functional-exception-handling?

Заменяет избыточные исключения в Java на монадические типы ошибок: Optional, VAVR Either, CompletableFuture. Плюс строит иерархии ошибок на sealed-классах, records и enum.

Что нужно для работы скилла?

Maven-проект, который проходит ./mvnw validate или mvn validate. Если вводите Either, понадобятся зависимости VAVR (io.vavr:vavr) и SLF4J.

Исходный текст

SKILL.md · Apache-2.0
---
name: 143-java-functional-exception-handling
description: Use when you need to apply functional exception handling best practices in Java — including replacing exception overuse with Optional and VAVR Either types, designing error type hierarchies using sealed classes and enums, implementing monadic error composition pipelines, establishing functional control flow patterns, and reserving exceptions only for truly exceptional system-level failures. This should trigger for requests such as Improve the code with Functional Exception Handling; Apply Functional Exception Handling; Refactor the code with Functional Exception Handling; Model Java errors with Result or Either types; Replace exception-heavy flows with functional error handling. Part of Plinth Toolkit
license: Apache-2.0
metadata:
  author: Juan Antonio Breña Moral
  version: 0.19.0
---
# Java Functional Exception handling Best Practices

Identify and apply functional exception handling best practices in Java to improve error clarity, maintainability, and performance by eliminating exception overuse in favour of monadic error types.

**What is covered in this Skill?**

- `Optional<T>` for nullable values over throwing `NullPointerException` or `NotFoundException`
- VAVR `Either<L,R>` for predictable business-logic failures
- `CompletableFuture<T>` for async error handling
- Sealed classes and records for rich error type hierarchies with exhaustive pattern matching
- Enum-based error types for simple failure cases
- Functional composition: `flatMap`/`map`/`peek`/`peekLeft` for chaining operations that can fail
- Structured logging: warn/info for business failures, error for system failures
- Checked vs unchecked exception discipline
- Exception chaining with full causal context when exceptions are unavoidable

**Scope:** The reference is organized by examples (good/bad code patterns) for each core area. Apply recommendations based on applicable examples.

## Constraints

Before applying any functional exception handling changes, ensure the project validates. When introducing Either types, confirm the VAVR dependency (io.vavr:vavr) and SLF4J are present.

- **MANDATORY**: Run `./mvnw validate` or `mvn validate` before applying any changes
- **SAFETY**: If validation fails, stop immediately — do not proceed until the project is in a valid state
- **DEPENDENCY**: When introducing `Either` types, confirm VAVR (`io.vavr:vavr`) and SLF4J are present
- **VERIFY**: Run `./mvnw clean verify` or `mvn clean verify` after applying improvements
- **BEFORE APPLYING**: Read the reference for detailed good/bad examples, constraints, and safeguards for each functional exception handling pattern

## When to use this skill

- Improve the code with Functional Exception Handling
- Apply Functional Exception Handling
- Refactor the code with Functional Exception Handling
- Model Java errors with Result or Either types
- Replace exception-heavy flows with functional error handling

## Workflow

1. **Validate project before functional-exception changes**

Run `./mvnw validate` or `mvn validate` and stop immediately if validation fails.

2. **Check required dependencies**

When introducing `Either`, confirm VAVR (`io.vavr:vavr`) and SLF4J are present before implementation.

3. **Read functional-exception reference and identify targets**

Read `references/143-java-functional-exception-handling.md` and identify places to replace exception-heavy control flow with monadic error types.

4. **Apply functional exception-handling refactorings**

Implement selected `Optional`/`Either`/async error patterns with structured logging and clear error contracts.

5. **Verify with full build**

Run `./mvnw clean verify` or `mvn clean verify` after applying improvements.

## Reference

For detailed guidance, examples, and constraints, see [references/143-java-functional-exception-handling.md](references/143-java-functional-exception-handling.md).

© Juan Antonio Breña Moral · Apache-2.0 · jabrena/plinth

Похожие скиллы

Все скиллы по теме «Языки программирования» →
migrate-to-shoehorn Matt Pocock Переводит type assertions с as в тестах на функции из @total-typescript/shoehorn. Нужен для частичных объектов и намеренно неверных данных в проверках. 475 388установок write-swift emilkowalski Скилл помогает писать, проверять и переносить код на Swift с учётом модели языка. Подойдёт, когда нужно разобраться с конкурентностью, ошибкой или циклом удержания объектов. CX Codex +1 119 300установок megacave JuliusBrussee Переводит ответы ассистента на классический китайский язык (вэньянь) для экономии места на экране. Активируется командами /megacave или /caveman wenyan. CX Codex +1 25 400установок find-docs upstash Тянет актуальную документацию, справочники API и примеры кода для любой библиотеки через Context7 CLI. Пригодится, когда агент отвечает по устаревшим данным обучения. CX Codex +1 9 400установок typescript-advanced-types Seth Hobson Помогает агенту писать сложную типизацию TypeScript: generics, conditional types и преобразования типов. Нужен для библиотек, API-клиентов и строгих конфигураций. CX Codex 92 169установок smart-explore thedotmack Структурно ищет функции и классы через tree-sitter. Пригодится, когда нужно разобраться в кодовой базе без чтения всех файлов. CX Codex +1 7 300установок

Из того же набора56

132-java-testing-integration-testing Скилл для ИИ-агента, который наводит порядок в интеграционных тестах Java-сервисов: поднимает WireMock, изолирует заглушки и убирает моки HTTP-клиентов. CX Codex +1 376установок 142-java-functional-programming Скилл для ИИ-агента, который переписывает Java-код в функциональном стиле: Records, чистые функции, Stream API и Optional. CX Codex +1 376установок 144-java-data-oriented-programming Помогает переписать код на Java в стиле data-oriented programming. Разделяет данные и поведение через records, убирает мутации и заменяет вложенные связи на плоские структуры по ID. CX Codex +1 372установок 128-java-generics Скилл разбирает Java-код по дженерикам: убирает raw types, чинит unchecked-касты, подсказывает PECS для wildcard. Пригодится, когда API на дженериках расползается. CX Codex +1 370установок 170-java-documentation Скилл ведёт агента по шагам и пишет README.md, package-info.java и Javadoc для Java-проекта на Maven. Пригодится, когда код есть, а документации к нему нет. CX Codex +1 359установок 322-frameworks-spring-boot-testing-integration-tests Скилл для написания и разбора интеграционных тестов Spring Boot 4.0.x: Testcontainers, срезы персистентности, HTTP-проверки. CX Codex +1 357установок 030-architecture-adr-general Скилл ведёт диалог с разработчиком и оформляет архитектурные решения (ADR) для Java-проектов в формате MADR. Помогает зафиксировать выбор базы данных или фреймворка. CX Codex +1 351установок 151-java-performance-jmeter Настраивает нагрузочное тестирование Java-проекта через Apache JMeter: создаёт скрипт run-jmeter.sh и структуру каталогов для тестовых сценариев. CX Codex +1 349установок

Спонсоры проекта

Компании, которые помогают держать аналитику открытой