1

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

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

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

我有

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

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

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

4

2 回答 2

3

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

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

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

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

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

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

只是一些想法

于 2012-07-16T10:39:00.320 回答