Skip to content

两种错误类型

就像任何其他程序一样,Effect 程序可能因预期或意外原因而失败。 non-Effect 程序和 Effect 程序之间的区别在于程序失败时提供给您的详细信息。 Effect 尝试保留尽可能多的关于导致程序失败原因的信息,以产生详细、 全面且人类可读的失败消息。

在 Effect 程序中,程序失败有两种可能的方式:

  • 预期错误:这些是开发者预期并期望作为正常程序执行一部分的错误。

  • 意外错误:这些是意外发生且不属于预期程序流程的错误。

这些错误,也称为_失败_、类型化错误 或_可恢复错误_,是开发者预期作为正常程序执行一部分的错误。 它们的作用类似于受检异常,在定义程序的域和控制流方面发挥作用。

预期错误在类型级别由 Effect 数据类型在”错误”通道中跟踪

const program: Effect<string, HttpError, never>

从类型中可以明显看出程序可能因 HttpError 类型的错误而失败。

意外错误,也称为_缺陷_、非类型化错误_或_不可恢复错误,是开发者 不预期在正常程序执行期间发生的错误。 与被认为是程序域和控制流一部分的预期错误不同, 意外错误类似于未受检异常,超出了程序的预期行为。

由于这些错误是不被预期的,Effect 不在类型级别跟踪它们。 然而,Effect 运行时确实跟踪这些错误,并提供几种方法来帮助从意外错误中恢复。