当我尝试从包装的异常中获取变量值时,Camel-> NullPointerException

时间:2019-05-02 16:08:49

标签: java nullpointerexception apache-camel

我创建自己的异常,该异常将存储多个字段(在示例中仅存储一个字段)。在骆驼中,我捕获了Java异常并将其传递给包装器。在该方法中,我取出所需的内容并将其保存为Exchange中的myException。在另一个地方,骆驼捕获此异常并将其传递给要获取特定字段的方法。问题在于myException.getMessage()始终抛出NullPointerException。如果我保存Optional.ofNullable(myException).map(Throwables :: getStackTraceAsString),它将返回超级消息(消息),但是我需要一个特定字段。

public class MyException extends Exception {
       private String message;
       public MyException(String message){
           super(message);
           this.message = message + "something";
       }
       public String getMessage() {
           return message;
       }
}

<doCatch>
   <exception>java.lang.someException</exception>
   <process ref="wrapper"/>
</doCatch>

public class Wrapper implements Processor {
    @Override
    public void process(Exchange exchange) throws Exception {
        Exception exception = exchange.getProperty(Exchange.EXCEPTION_CAUGHT, Exception.class);
       String something = StringUtils.substringBetween(exception.toString(), "(", ")");
       MyException myException = new MyException(something);
       exchange.setException(myException);
    }
}

<doCatch>
   <exception>com.exception.MyException</exception>
   <to id="createMessageDTO" uri="bean:messageDTOBuilder?method=newMessage"/>
       ...
</doCatch>

public MessageDTO newMessage(@ExchangeException MyException myException) {
       return MessageDTO
           .builder()
           .message(Optional.ofNullable(myException.getMessage()))
       .build();
}

我怀疑标记仅存储Exception类所具有的内容,其余部分被截断。也许有某种方法可以纠正它,但是我缺乏知识阻止了我。我承认我只是从骆驼开始冒险。

0 个答案:

没有答案