【问题标题】:How pass body variable as a parameter to custom Exception如何将主体变量作为参数传递给自定义异常
【发布时间】:2017-09-07 21:23:04
【问题描述】:

我很难理解如何将存储在正文中的变量作为 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.

有什么建议吗? Tnks。

【问题讨论】:

    标签: exception apache-camel custom-error-handling


    【解决方案1】:

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

    更改代码:

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

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

    我在公共汽车上使用手机,因此无法检查代码是否运行,但它应该为您指明正确的方向。

    【讨论】:

    • 不起作用。该消息将字符串作为“${body[errorCode]}”,它无法替换实际值。
    • 试过了:simple("${body[errorCode]}").getText() 和 simple("${body[errorCode]}").toString() 但没有。跨度>
    【解决方案2】:
    @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");
                }
            };
        }
    

    【讨论】:

      【解决方案3】:

      【讨论】:

      • 链接往往会死掉。以后请贴一个sn-p。
      猜你喜欢
      • 2014-08-18
      • 2015-01-21
      • 2016-11-16
      • 2023-03-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多