【问题标题】:How to catch a runtime exception in a NB platform module?如何在 NB 平台模块中捕获运行时异常?
【发布时间】:2010-08-05 08:34:20
【问题描述】:

here 所述,我想通过捕获实体类不匹配时发生的异常来更新用户的数据库。我知道我可以在每个 db-interface 方法中添加一个 catch 语句,但这很容易出错*。其他“轮询方法”也是可能的,但它们不是像我想要的那样通过捕获异常来驱动中断。

我认为我正在寻找的是在将异常传递给用户之前捕获异常(可能会使应用程序崩溃)。我会把我的catch块放在那里。我会把它放在非 NB 应用程序的 main() 中。

  • 我的理解是,异常是基于实体抛出的(即方法只涉及一个实体,没有改变,不会抛出任何异常,虽然其他实体发生了改变)。

【问题讨论】:

    标签: java eclipselink jpa-2.0 netbeans-platform


    【解决方案1】:

    我遇到了类似的问题,但我想我的问题更难解决。我在服务器端使用 JPA,而服务器实际上是一个 Web 服务提供者。

    持久化由容器管理,根据我的应用设置,它使用“创建”策略。当然,每次我更改实体并重新部署应用程序时,都会引发很多异常。

    我最终决定做的是在一个单独的过程中创建/迁移现有的数据库。也就是说,读取与实体关联的元数据并将其与当前数据库进行比较。

    之后,它会创建一个迁移脚本,以防 db 架构不同以适应新的架构而不会丢失任何信息(迁移脚本生成的复杂性取决于您计划如何处理数据类型更改或属性删除等情况)。最后一步是重新部署应用程序(在您的情况下启动它)。

    我建议采用一种主动的方法,您不必等待抛出异常,而是在运行应用程序之前尝试猜测更改。

    【讨论】:

    • 这就是轮询和中断驱动的区别。我觉得后者更高效、更“自然”。
    猜你喜欢
    • 1970-01-01
    • 2019-09-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-14
    • 2010-09-28
    相关资源
    最近更新 更多