处理SQL 异常¶
在运行应用程序的时候,可能会抛出很多异常。可能由于数据库服务器没有打开导致连接不上,插入的数据类型不符,想要删除的表不存在等等。由JDBC抛出的异常大多是java.sql.SQLException或者它的子类的对象。这些异常有可能是从后台数据库跑出来的,也有可能是从前台的JDBC驱动抛出的。比如上面提到的数据库服务器连接不上就是由JDBC驱动抛出的异常,想要删除的表不存在就是由后台数据库抛出的错误。
那么如何处理这些由JDBC抛出的异常呢?由JDBC抛出的java.sql.SQLException和它的子类,一般都会包括错误描述,标准的SQL State和厂商特定的错误编码。错误描述、SQL State和错误编号会在附录中给出。
java.sql.SQLException提供了获取这些信息的方法。
通过调用SQLException的getMessage()方法,可以获得由JDBC驱动或者后台数据库报出的错误。通过这个错误描述,就可以知道错误的原因了。
通过调用SQLException的getErrorCode()方法,可以获得由厂商特定错误编码,在有些情况下可能不返回错误描述,只返回一个空的字符串。
通过调用SQLException的getState()的方法,可以获得标准的SQL State。SQL State是由5个数字组成的字符串。
下面这例子打印出调用getMessage方法所得到的错误信息。
try{
<some code>
}
catch(SQLException se){
System.out.println(“错误信息:”+se.getMessage());
}
SQLException类也允许打印出堆栈式的出错信息。打印的内容将包括错误描述,和这个错误从抛出一直到被捕捉到所经过的所有被调用的方法。
下面给出了如何打印出堆栈信息的方法。
try{
<some code>
}
catch(SQLException se){
se.printStackTrace();}