我正在将Apache Camel和Spring Boot和Jetty用作嵌入式服务器。
我有一个使用以下路由定义的RouteBuilder:
onException(Exception.class)
.handled(true)
.process(new ErrorProcessor());
rest("/mysvc/requests/{id}")
.consumes("application/json")
.produces("application/json")
.get()
.to("direct:processMyRequest");
from("direct:processMyRequest")
.log("Hello World");
[当我用GET /mysvc/requests/123
之类的请求访问REST端点时,我得到一个有效的响应Hello World
。
[如果遇到错误的端点,例如GET /mysvc/requests
(不提供ID),我只会得到带有以下响应正文的响应代码404
:
{
url: "/mysvc/requests",
status: "404",
message: "Not Found",
servlet: "CamelServlet",
}
我注意到onException
子句没有捕获异常,也没有调用我的ErrorProcessor()
。为什么会这样?
如何确保onException
子句捕获此类错误?
嗯,我想不仅没有调用您的onException
,而且还没有调用您的REST路由,因为您的请求与路径不匹配(缺少ID)。
因此,我认为标准错误处理将返回404,因为没有无路可答复该请求。
如果要捕获这些请求,则必须创建侦听/mysvc/requests
的路由]。