【发布时间】:2019-03-03 14:03:40
【问题描述】:
在编写流程时,当我们不得不抛出异常时推荐什么?许多示例显示抛出 IllegalArgumentException 这是一个运行时异常。流的“调用”方法签名表明它抛出 FlowException 及其检查异常。当我们在休息层通过 RPCClient 进行通信时,我们会在抛出异常时得到以下行为
当像 FlowException 这样的 Checked Exception 时,在 RPCClient 端它会作为 UndeclaredThrowableException 抛出,而实际的异常是在 UndeclaredThrowableException 的 undeclaredThrowable 属性下找到的
当任何运行时异常被抛出时,我们确实会得到实际异常。
在休息层方面,我们确实希望可以识别异常,以便我们可以向 UI 层提供适当的 JSON 响应。在对 Corda 核心进行了一些挖掘之后,我们还发现还有 CordaRuntimeException 类,它是未经检查的异常,最好抛出这个异常而不是抛出通用的 IllegalArgumentException。但同时也需要根据需要抛出 FlowException。所以我的问题是在什么情况下我们需要抛出 FlowException vs unchecked runtime exception?
【问题讨论】:
标签: corda