gui应用程序中的异常处理

时间:2012-10-12 16:12:49

标签: java user-interface exception-handling unchecked

我对如何在GUI应用程序中处理未经检查的异常感到有点迷失。

我是具有将用户新创建的公司保存在(嵌入式)数据库中的功能。

保存新创建的公司的功能会抛出3例外:

IllegalArgumentException:如果公司或非空字段为空(手动检查并抛出)。

EntityExistException:如果公司(它的名字)已经存在。 (也手动检查并抛出)。

PersistenceException:如果在尝试保存时出现问题。 (抓住并重新投入)。

调用saveCompany方法的函数捕获所有3个异常,然后记录它们并向用户显示发生错误的对话框。

我现在想知道我是否需要抓住它们?或者只是让它们跑到globalExceptionHandler(我也能看到它们)可以吗? 我也想知道我的反应应该是什么?

我应该告诉用户是否有错误并让程序运行(导致程序的其他部分应该正常运行)或者我应该告诉他然后结束程序(因为它是程序员错误,不应该是在那里)?

3 个答案:

答案 0 :(得分:4)

所以好消息是你要问所有正确的问题。

  

我应该告诉用户是否有错误并让程序运行(导致程序的其他部分应该正常运行)或者我应该告诉他然后结束程序(因为它是程序员错误,不应该是在那里)?

这是一个需要仔细考虑的设计问题。如果它是可恢复的错误并且程序无法继续运行,则程序应在没有用户选项的情况下关闭。如果程序的一部分必须死亡但其他部分可能会死亡,则应通知用户。如果用户需要修复某些数据以便程序可以运行,则应该通知用户。等等,是的,你问的是正确的问题,你实际上必须考虑它们并且要明智。

答案 1 :(得分:4)

如果 IllegalArgumentException ,您应该捕获异常并告诉用户更正数据(不要打印堆栈跟踪)。

如果 EntityExistException ,应告知用户该公司已存在,并且他或她应考虑更新该公司。

当用户收到 PersistenceException 时,应该会看到一个带有堆栈跟踪的对话窗口(可能还有与开发人员相关的其他数据),并通知他们提交错误报告。

答案 2 :(得分:1)

在我看来,请执行以下操作

EntityExistException:让用户知道该实体已存在。继续使用该应用程序。

PersistenceExceptionIllegalArgumentException:为用户提供一般信息,然后停止该应用。

我希望您看到上述两个例外处理方式的区别。一个是可以由用户引起和修复的东西。另一个是用户无法做任何事情。