在Oracle JDBC访问中加入Spring特性
2007-05-10 12:20:43 来源:WEB开发网JDBC 异常处理
返回到代码清单 1,注意 java.sql.SQLException 是唯一一个显式捕获的异常。SQLException 中捕获了与数据库和 SQL 相关的各种异常情况。描述 SQLException 类的 Javadoc 注释介绍了可以从 SQLException 的实例中获得的基本信息。这些信息包括错误描述字符串 [getMessage()]、某个标准化 SQLState 异常 String [getSQLState()] 和供应商特有的整型错误码 [getErrorCode()]。在代码清单 1 中实现的简单的异常处理中使用了所有这三种信息。
SQLException 是一种强制异常(直接扩展 java.lang.Exception)。Java 的强制异常曾经引起很大争议,现在 Java 社区似乎正在取得共识:只有当在应用程序能够处理异常时才应使用强制异常。如应用程序代码不能以有意义的方式处理异常,则不应当强制处理该异常。因为 SQLException 是强制异常,所以应用程序代码必须处理它,或者捕获它并对其进行一些处理或显式地将其抛出给调用代码。
SQLException 的最后一点细微差别在于它是使用 SQL 的关系数据源所特有的异常。这使得不适合将它包含在真正可移植的数据访问对象 (DAO) 中,后者应当独立于数据信息库类型和访问语言。
Spring 框架对 SQLException 的处理是其在支持更容易的 JDBC 开发和维护方面最有用的特性之一。Spring 框架提供了完成 SQLException 抽象化的 JDBC 支持,并提供了一个对 DAO 友好的非检查异常层次结构。
处理供应商特有的错误码
如上所述,标准的 SQLException 提供了一个标准化的信息段 (SQLState) 和一个供应商特有的信息段 (ErrorCode)。正如大多数的数据库和它们的 JDBC 驱动程序实现一样,Oracle 数据库和 JDBC 驱动程序通过供应商特有的错误码所提供的关于问题的详细信息要比通过 SQLException 的与供应商无关的 SQLState 组件所提供的信息多得多。
更多精彩
赞助商链接