Hi. Can anyone explain to me how this works? In the close_ method of client.net.NetAgent.java there is the following code:

                accumulatedExceptions =
new SqlException(logWriter_, e, "A communication error has been detected. " +
                        "Communication protocol being used: {0}. " +
                        "Communication API being used: {1}. " +
                        "Location where the error was detected: {2}. " +
"Communication function detecting the error: {3}. " + "Protocol specific error codes(s) {4}, {5}, {6}. " +
                        "TCP/IP " + "SOCKETS " + "Agent.close() " +
"InputStream.close() " + e.getMessage() + " " + "* " + "0");


Note the massive use of placeholders, and then none of the values for the placeholders are provided.

This is repeated three times throughout the close() method as exceptions are accumulated.

I track through to the SqlException code and the message appears to be simply stored verbatim and ultimately a chain of SqlExceptions are thrown to the user, with the placeholders not filled in.

I did a little test to throw this exception unconditionally and, which is what I would have expected, I get the following text:

> java.sql.SQLException: A communication error has been detected. Communication protocol being used: {0}. Communication API being used: {1}. Location where the error was detected: {2}. Communication function detecting the error: {3}. Protoc ol specific error codes(s) {4}, {5}, {6}. TCP/IP SOCKETS Agent.close() InputStre
am.close() blahblah * 0

Am I missing some magic here? Or is this just a bug that was never uncovered?

Thanks,

David

Reply via email to