При написании потока, что рекомендуется, когда мы должны генерировать исключения?Во многих примерах показано создание исключения IllegalArgumentException, которое является исключением времени выполнения.Подпись метода Call для потока показывает, что он вызывает исключение FlowException и его проверенное исключение.Когда мы общаемся через RPCClient на нашем уровне отдыха, мы получаем следующее поведение, когда генерируется исключение
Когда проверенное исключение, такое как FlowException, на стороне RPCClient оно выбрасывается как UndeclaredThrowableException и фактическое исключениенаходится в свойстве undeclaredThrowable объекта UndeclaredThrowableException
Когда выдается любое исключение времени выполнения, мы получаем фактическое исключение.
На стороне остального уровня мымы хотим, чтобы исключение было распознаваемым, чтобы мы могли предоставить соответствующий ответ JSON на уровень пользовательского интерфейса.После некоторого углубления в ядро Corda мы также обнаружили, что есть также класс CordaRuntimeException, который является непроверенным исключением, и может быть лучше выбросить это исключение вместо генерирования общего IllegalArgumentException.Но в то же время FlowException необходимо генерировать по мере необходимости.Поэтому мой вопрос в том, в какой ситуации нам нужно выдать исключение FlowException и непроверенное время выполнения?