假设我有以下流对:
Initiator
Responder
,接受或拒绝签署交易如果运行Responder
流的节点拒绝签名,他如何将拒绝原因传回运行Initiator
流的节点?
答案 0 :(得分:1)
运行Responder
流的节点需要抛出FlowException
。 FlowException
是一种特殊的异常类型,当您希望对方可以看到异常消息时,它应该在流中抛出。
所以在Responder
中,你可以写:
val signTransactionFlow = object : SignTransactionFlow(otherPartyFlow) {
override fun checkTransaction(stx: SignedTransaction) {
val counterparty = otherPartyFlow.counterparty
throw FlowException("I refuse to trade with $counterparty")
}
}
return subFlow(signTransactionFlow)
在Initiator
中,您可以选择处理异常:
try {
val fullySignedTx = subFlow(CollectSignaturesFlow(partSignedTx, setOf(otherPartyFlow), GATHERING_SIGS.childProgressTracker()))
} catch (e: FlowException) {
logger.error(e.message)
TODO("Handle error.")
}