如何捕获"无效的十六进制数字"?

时间:2014-06-30 09:20:51

标签: java sql oracle exception-handling

我有一个程序,其中抛出了SQLException:

java.sql.SQLException: Fail to convert to internal representation: Invalid hex digit

错误在oracle.sql.RAW.hexString2Bytes中抛出,因为输入数据无效。

如何在不捕获所有其他SQLExceptions的情况下捕获此特定错误?

3 个答案:

答案 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个对象,检查异常消息,然后只处理您感兴趣的异常(具有指定消息的异常)。