当前位置: 首页 > 知识库问答 >
问题:

camel上下文中的全局异常处理程序-覆盖所有路由

龙亮
2023-03-14

我有10条骆驼路线如下所示:

java prettyprint-override">@AllArgsConstructor
public class MyCamelRoute extends RouteBuilder {

    /**
     * {@inheritDoc}
     */
    @Override
    public void configure() throws Exception {
    }
}  
 @Bean("myCamelRoute")
 public RouteBuilder createMyCamelRoute () {
        return new MyCamelRoute();
 }

共有1个答案

宁欣怿
2023-03-14

您可以从camel文档中为Routebuilder中定义的所有路由定义全局异常子句

Java DSL的全局范围是每个RouteBuilder实例,因此如果您想在多个RouteBuilder类之间共享,那么创建一个基本抽象RouteBuilder类,并将错误处理逻辑放在其configure方法中。然后扩展该类,并确保对super.configure()进行类化。我们只是在使用Java继承技术。

换句话说,BaseRouteBuilder类将是:

public abstract BaseRouteBuilder extends RouteBuilder {

@Override
public void configure() {
   onException(Throwable.class).log("Excpetion caught");
}

然后是您的路由:

@AllArgsConstructor
public class MyCamelRoute extends BaseRouteBuilder {

    /**
     * {@inheritDoc}
     */
    @Override
    public void configure() throws Exception {
        super.configure();
        // Route Configuration here
    }

}

正如所指出的,从子类调用super.configure()很重要,否则将不会执行异常子句。

 类似资料:
  • 问题内容: 有没有一种方法可以在Java中创建全局异常处理程序。我想这样使用: 处理程序可能无法捕获在主体中引发的异常。 马丁 问题答案: 使用Thread.setDefaultUncaughtExceptionHandler。有关示例,请参见Rod Hilton的“ Global Exception Handling ”博客文章。

  • 问题内容: 我问一个有关如何覆盖默认的Java异常处理问题,被告知的答案在这里。 现在的问题是:是否有一种方法可以将该处理程序泛化为所有线程,而无需在每个线程中明确声明? 我认为应该可以某种方式获取所有线程,然后将其绑定到异常处理程序? 问题答案: 使用。正如javadoc所说: “通过设置默认的未捕获异常处理程序,应用程序可以更改那些已经接受系统提供的任何“默认”行为的线程的未捕获异常处理方式(

  • 统一错误处理 文档:https://eggjs.org/zh-cn/tutorials/restful.html 自定义一个异常基类 // app / exceptions / http_exceptions.js class HttpExceptions extends Error { constructor(msg='服务器异常', code=1, httpCode=400) {

  • 我无法覆盖REST API中默认的Spring Boot错误响应。我有以下代码 然后在我的REST api中抛出这个BusinessValidationException。这个处理程序被调用(我可以在调试器中看到它),但是我仍然得到缺省的Spring BootREST错误消息。是否有一种方法可以重写并仅将default用作后退?带有Groovy的Spring Boot版本1.3.2。最诚挚的问候

  • 有没有办法在泽西进行全局异常处理?与其单个资源具有try/catch块,然后调用一些方法来清理所有要发回客户端的异常,我希望有一种方法可以将其放在实际调用资源的地方。这可能吗?如果是这样,怎么做? 相反,where会向Jersey servlet抛出某种Jersey配置的异常: 有: 其中异常将被抛出到我可以拦截并从那里调用的东西。 这实际上只是为了简化所有Jersey资源,并确保返回给客户机的异

  • 问题内容: 我有一个应用程序,需要编写一个自定义的全局未捕获的异常处理程序。我已经阅读了所有stackoverflow线程,并且其中每个线程都只是缺少一个清晰而简单的示例,说明了如何实现这一点。 考虑以下简单示例: 它抛出一个标准异常,它只是一个标准输出。我如何实现自己的异常,该异常可以通过将错误输出到日志文件中的简单方法覆盖标准异常?显然,实际的应用程序要大得多,我们正在谈论未捕获的异常,这就是