Swing JDBC SQL 异常处理

Posted

技术标签:

【中文标题】Swing JDBC SQL 异常处理【英文标题】:Swing JDBC SQL Exception Handling 【发布时间】:2016-01-09 10:24:54 【问题描述】:

我一直在开发一个使用 swing 并让用户与数据库交互的 JDBC 程序。

在开发过程中,SQL 异常刚刚被打印堆栈跟踪捕获(尽管它们还没有发生 - 仍然需要防止异常。) 我应该如何以用户友好的方式处理异常?有一个对话框说: '数据库错误' ? 我应该向用户透露多少信息,给他们太多细节可能是不安全的,但是再一次,他们无法修复任何东西或通知我们错误。

【问题讨论】:

您可以记录此类错误,将堆栈跟踪作为邮件发送到您的错误捕获帐户,并以高优先级查看它。在客户端,您可以简单地显示“与您的帐户建立连接时出错。请稍后再试。”这样可以为您争取一点时间来解决问题。 太好了,谢谢。争取一点时间听起来像是一个计划。 那我马上给你答复 每个错误都将是上下文相关的,例如,由于连接失败而提供给用户的信息将不同于选择查询(可能还有插入/更新)消息。您需要确定是用户错误还是代码错误,例如,是用户在查询中输入了错误的值还是您的代码搞砸了 我们通常在工作中做的是显示“一般”消息(查询失败),然后是来自异常的“消息”,然后我们有一个“报告”按钮来报告异常(只是通过电子邮件发送)和显示/隐藏堆栈跟踪功能,因为当它在您自己的脸上爆炸时,很高兴能够立即看到它 【参考方案1】:

我建议制作一个日志系统。因此,您在应用程序中记录活动,包括异常。在这里您可以对异常进行更详细的描述,如果您担心安全性,您可以加密日志。当发生异常时,让用户有机会导出当前会话的日志并将其作为错误报告发送给您(如果加密,您可以解密它 -> 使用非对称加密的好地方)。 如果用户可以编写 sql 语句,则通知他们语法错误。如果你失去了与数据库的连接,也告诉他发生了,但永远不要转发任何关于异常的具体信息。

【讨论】:

谢谢,您可以推荐任何资源来学习使用它吗?还是只是标准的异常日志记录并编写我自己的使用方式? 只需创建一个包含日志文件的文件夹(名称:日期+时间)。将用户正在执行的操作写入文件。 示例: 线程:thread1 用户按下按钮1;线程:thread1 Button1 动作开始执行 线程:thread1 Button1 动作执行成功;线程:thread1 用户按下按钮 2;线程:thread1 异常:“堆栈跟踪”/*(您可以记录操作中使用的数据以使调试更容易)*/ 有关加密的快速示例:link @D.Clayton 抱歉,评论中缺少格式我是新手,所以还没有学会如何。 :// 谢谢,这正是我想要的。答案很好,很容易理解。【参考方案2】:

您可以记录此类错误,将堆栈跟踪作为邮件发送到您的错误捕获帐户,并以高优先级查看它。在客户端,您可以简单地显示“与您的帐户建立连接时出错。请稍后再试。”这样可以为您争取一点时间来解决问题。

【讨论】:

以上是关于Swing JDBC SQL 异常处理的主要内容,如果未能解决你的问题,请参考以下文章

JDBC异常

Unit06: Spring对JDBC的 整合支持 Spring+JDBC TemplateSpring异常处理

Spring JDBC 示例

Spring之JDBC框架

JDBC的异常

JSF 1.x 通用异常处理