【问题标题】:Where can I handle Exceptions in MVC Java?我在哪里可以处理 MVC Java 中的异常?
【发布时间】:2012-07-16 10:27:56
【问题描述】:

我正在编写 GUI 应用程序,用于在公司的会计软件和电子商务系统(网店)之间交换和同步数据。

我想使用 MVC(模型-视图-控制器)设计模式来创建它。

我的应用程序的一部分是用会计软件覆盖电子商务库存余额的功能。

我有

  1. 视图 - JDialog 显示覆盖进度。
  2. 控制器 - 负责数据库和视图之间的交互
  3. 模型 - 来自 dbs 和应用设置的数据

当我对数据库进行排队时,我必须捕获一个异常(ClassNotFound 和 SQL)。

我应该在哪里创建 try {} catch {} 块?在视图中?还是在控制器中?
我想展示一些带有错误消息的 JOptionPane 并完成一些应用程序状态。

【问题讨论】:

  • 我想应该使用try-catch 块,因为问题的真正原因在哪里,它可以帮助您尽早找出问题,而不是把它们扔到其他地方。此外,最好在Log4J 的帮助下进行日志记录,这样即使用户错过了错误消息,他们也可以稍后从相应的文件中检查出来:-)

标签: java swing model-view-controller exception exception-handling


【解决方案1】:

您只提到了已检查的异常。

  1. 您不需要捕获异常。您可以选择声明它。
  2. 如果您不想声明它,可以将其包装RuntimeException 中。
  3. 模型中的所有异常都应在代码中的一个位置(所谓的异常屏障)处理,并以统一的方式呈现给控制器。 Controller 的主要兴趣是操作是否成功,它对失败的有趣细节不感兴趣。
  4. 不建议在不使用 Spring 之类的东西进行声明性事务、连接池等的情况下编写 DAO 层(用于 DB 通信)。

【讨论】:

  • 感谢您的重播!但我不知道春天。我想知道异常的原因是什么。 MySQL 连接或 Pervasive 连接有问题。
【解决方案2】:

这是一个棘手的问题,将归结为您如何构建代码。通常,如果可以,让模型以视图可以处理的方式抛出异常。这使您的模型与视图分离。

在某些情况下(例如使用 JTables 或 JLists)这种事情是不可能的。在这些情况下,如果可能,请单独加载“模型数据”(处理任何错误),然后将其传递给控制(JTable/JList)模型。

但同样,您可能会遇到这样的情况:您发现自己使用标准模型(例如表格模型)并且您正在从单独的模型(例如结果集等(仅作为示例)中读取数据) - 因为性能得到了改进或其他什么)模型将被呈现为尝试处理异常的任务。

在这种情况下,我只能建议您为模型提供某种能够将错误报告回 UI 的错误处理程序/侦听器。如果可以,我们提供一个接口,这将允许您在需要时解耦视图/模型。

只是一些想法

【讨论】:

    猜你喜欢
    • 2011-03-04
    • 1970-01-01
    • 2019-02-12
    • 2013-03-27
    • 1970-01-01
    • 2019-06-04
    • 1970-01-01
    • 2011-05-09
    • 1970-01-01
    相关资源
    最近更新 更多