Котлин функциональный способ - PullRequest
0 голосов
/ 09 мая 2019

Я пытаюсь усовершенствовать себя в Котлине с помощью функционального программирования.И тогда я сделал это:

Я устал от того, как я пишу try - catch, и создал следующую функцию:

package com.learning.functionalway

fun <T> tryCatch(t: T?, excpetion: (Throwable)): T? = try {
    t
} catch (e: Exception) {
    throw excpetion
}

И я использовал это так:

@Service
class ProductService(val repository: IProductRepository, val repositoryS: IStockRepository) : IService<Product, ProductModel> {

    override fun find(id: Long) = tryCatch(
            repository.find(id),
            DataNotFound("Product not found"))

other methods ..
}

И мое исключение, которое я имею в виду в «Обработчике исключений»

class DataNotFound(message: String?) : Exception(message) {
}

Это правильный путь, который я использовал, чтобы изменить способ, которым я использую try - catch?Или есть лучшие способы сделать это?

1 Ответ

3 голосов
/ 09 мая 2019

Ваше решение - не "более функциональный" способ обработки ошибок, а скорее лишь небольшое улучшение синтаксиса try-catch.

Если вы действительно хотите использовать функциональное программирование, я бы порекомендовал вампроверить Стрелка .Стандартной библиотеки Kotlin недостаточно для продвинутых концепций функционального программирования (таких как обработка ошибок), и Arrow заполняет этот пробел.

Вы можете прочитать их документацию о том, как правильно обрабатывать ошибки.
Если вы хотите поговорить об этом, я бы порекомендовал вам посмотреть это видео (тема обработки ошибок начинается здесь ), посвященное Kotlin и функциональному программированию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...