Camel 如何将body变量作为参数传递给自定义Exception

pexxcrt2  于 2022-11-07  发布在  Apache
关注(0)|答案(3)|浏览(161)

我很难理解如何将一个存储在body中的变量作为throwException的参数传递。

.when(simple("${body[errorCode]} contains '101'"))
.throwException(new IllegalArgumentException(
"Action not allowed- Error code:" + ${body[errorCode]))
 .otherwise()

当我运行应用程序时,传递给ErrorHandling的消息是

'Action not allowed- Error code:${body[errorCode]', no replacing for errorCode variable.

有什么建议吗?谢谢。

hgc7kmma

hgc7kmma1#

所以你在Java中使用Simple语言,但是你有一些语法问题。没什么大问题。你没有完成Simple表达式的分隔符。你也不必连接字符串。
更改代码:

.throwException(new IllegalArgumentException("Action not allowed- Error code:" + ${body[errorCode]))

错误代码:${正文[错误代码]}”))
我在公交车上,用我的手机,所以不能检查代码是否运行,但它应该指出你在正确的方向。

c0vxltue

c0vxltue2#

@Override
    protected RouteBuilder createRouteBuilder() throws Exception {
        return new RouteBuilder() {
            @Override
            public void configure() throws Exception {
                from("direct:start")
                        .to("mock:start")
                      **.throwException(IllegalArgumentException.class, "Darn ${body} is invalid")**
                        .to("mock:result");
            }
        };
    }

相关问题