我有一个程序,其中抛出了SQLException:
java.sql.SQLException: Fail to convert to internal representation: Invalid hex digit
错误在oracle.sql.RAW.hexString2Bytes
中抛出,因为输入数据无效。
如何在不捕获所有其他SQLExceptions的情况下捕获此特定错误?
答案 0 :(得分:1)
你可以通过两种方法获得它。
一个是SQLException#getErrorCode()
,它会为int
对象返回SQLException
特定于供应商的异常代码,并比较int
(我不知道) "无效十六进制数字"的异常代码,但可能是System.out.println()
}
其他方法是你可以通过Throwable#getMessage()
获取异常消息并检查消息字符串。
您还可以参考:Retrieving Exceptions
答案 1 :(得分:1)
您可以处理您的例外,如果您想要处理,请检查条件。如果不处理,您可以将原始异常抛出到外部catch块进行处理。
try {
... your code here ...
} catch (SqlException e) {
if (e.getErrorCode() == ...) {
... do your exception handling
} else {
throw e; // <-- re-throw the original Exception
}
}
答案 2 :(得分:0)
你不能这样做。 Java中基于类型(在本例中为SQLException
)捕获异常。但是,您仍然可以捕获所有SQLException
个对象,检查异常消息,然后只处理您感兴趣的异常(具有指定消息的异常)。