如何处理java中的嵌套异常?

时间:2011-08-09 14:21:48

标签: jdbc

我正在尝试连接到mysql数据库。我在建立连接时使用try catch。 我希望我能够知道捕获了什么异常,因此,我可以显示相应的错误消息。 例如,如果我传递错误的主机名,我应该显示错误的主机名。 一种方法是获取运行时异常类的类名。但嵌套异常就像这样抛出..

  

建立连接时出现了一些错误   databasecom.mysql.jdbc.CommunicationsException:通信链接   基础异常导致的失败:    - BEGIN NESTED EXCEPTION - java.net.UnknownHostException消息:   localhsost STACKTRACE:java.net.UnknownHostException:localhsost at   java.net.Inet6AddressImpl.lookupAllHostAddr(Native Method)at   java.net.InetAddress $ 1.lookupAllHostAddr(InetAddress.java:867)at   java.net.InetAddress.getAddressFromNameService(InetAddress.java:1246)   在java.net.InetAddress.getAllByName0(InetAddress.java:1197)at   java.net.InetAddress.getAllByName(InetAddress.java:1128)at   java.net.InetAddress.getAllByName(InetAddress.java:1064)at   com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:246)   在com.mysql.jdbc.MysqlIO。(MysqlIO.java:271)at   com.mysql.jdbc.Connection.createNewIO(Connection.java:2771)at   com.mysql.jdbc.Connection。(Connection.java:1555)at   com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:285)   在java.sql.DriverManager.getConnection(DriverManager.java:620)at   java.sql.DriverManager.getConnection(DriverManager.java:222)at   accessMySQL.accessMySQL.createConnection(accessMySQL.java:24)at   test.main(test.java:16)    - END NESTED EXCEPTION - 发送到服务器的最后一个数据包是1毫秒   前。建立连接时出现问题。

现在我想知道类名UnknownHostException,所以我可以设置类似

的条件
if(e.getClass().toString() == "UnknownHostException")  
System.out.println("Exception caught while connection to database. Hostname appears to be incorrect"); 

请帮忙!! P.s,主机名中的拼写错误是为了生成异常

1 个答案:

答案 0 :(得分:3)

试试这个:

if (e.getCause() instanceof UnknownHostException) {
    // ...
}