
挖坑不填兽 -
为 Java 编写的 Try 和 Tuple 类型
Java 设计了一套久经考验的异常处理机制,为开发高质量的程序提供了可靠保障。但是随着现在软件日趋复杂,特别是异步编 程的发展,语法级的异常处理机制已经不足使用。 我模仿 Scala 的 Try 类型,为 Java 编写了一组 Try 和 Tuple 方法,用于简化复杂应用逻辑中的异常管理和数据传递。 根据最新的 Java 21 和目前仍在广泛使用的 Java 8,分别在 jaskell-rocks 和 jaskell-java8 工具库中实现。 首先,这些工具并非内置异常语法的替代品,相反,它们依附于 try/catch 机制上,辅助我们更方便的使用异常管理。因此, 介绍它们的时候,也会涉异常机制的知识运用。 异常语法的局限 异常语法的限制往往不来自关键字本身,而是来自 Java 标准库。例如,stream api中通常只接受不抛出异常的函数对象, 但是在日常的操作中,异常是非常常见的,例如我们如果需要对一个 List<String> 中的每一个字符串做 json 解析, 不可避免的要面对可能出错的情况。那么 Stream 的 map 方法就很难满足要求。如果我们在 lambda 中明确的捕获异常, 这个代码块就会多处好几行。如果应用项目里经常要做类似的操作,那么这种高度重复的 try catch会遍地都是,而起难以 抽象。有些 JSON...
AI生成摘要 Java的异常处理机制在复杂的软件开发中已经不足以应对需求。为了简化异常管理和数据传递,作者模仿了Scala的Try类型,为Java编写了一组Try和Tuple方法。这些工具并非替代异常语法,而是辅助使用异常管理。Try类型可以携带异常状态的数据封装,包括Success和Failure两个实现。作者还介绍了Supplier和Triable接口的使用,以及Try类型的map和flatMap方法。最后,作者提到了使用Tuple类型传递多个不同的Triable求值结果的便利性。