Несколько операторов catch с одинаковыми типами исключенийJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Несколько операторов catch с одинаковыми типами исключений

Сообщение Anonymous »

Я повсюду искал ответ на этот вопрос и так и не нашел его.

По сути, я пытаюсь подключиться к серверу базы данных через графический интерфейс. Мой начальник хочет иметь возможность вводить все поля, а затем проверять, действительны ли они, а затем, если есть недействительные записи, он хочет, чтобы я сделал текст красным, указывая, что поле недействительно. У меня есть оператор try catch ClassNotFoundException и SQLException. Поскольку необходимо проверить несколько полей, я попытался использовать набор операторов if для проверки информации о соединении. Вот код ниже, надеюсь, это имеет смысл...

//The cancel boolean values in this code are used elsewhere to regulate the Threads
try
{
//attempt connection here
}
catch(ClassNotFoundException | SQLException e)
{
String[] errors = new String[4]; //This will create a String array of the errors it catches
//and will later get called into a method that displays
//the messages in a JOptionPane.showMessageDialog()
if (e.getMessage().startsWith("The TCP/IP connection to the host"))
{
errors[0] = "SQL CONNECTION FAILED: Please check the server URL you entered to make sure it is correct.";
cancel = true;
mGUI.serverNameTextField.setForeground(Color.RED);
}

if (e.getMessage().startsWith("Login failed for user"))
{
errors[1] = "LOGIN FAILED: You do not have sufficient access to the server.";
cancel = true;

}
if (e.getMessage().startsWith("Cannot open database"))
{
errors[2] = "SQL CONNECTION FAILED: Please check the database name you entered to make sure it is correct.";
cancel = true;
mGUI.dbNameTextField.setForeground(Color.RED);
}

mGUI.reportErrors(errors); //Method where it reports the String[] array of errors
//However, the 'errors' parameter only returns one error
//message at a time, which is the problem.


Спасибо за любую помощь!

****РЕДАКТИРОВАТЬ******
Я нашел решение, поэтому надеюсь, что оно кому-нибудь поможет. Я изменил свои операторы if, добавив аргумент AND, проверяющий конкретный код ошибки. Вы можете найти код ошибки, установив точку останова и просмотрев перспективу отладки, или вы можете сделать то, что я сделал, и установить оператор печати, чтобы увидеть код ошибки. Вот оператор печати:

System.out.println(((SQLException) e).getErrorCode());


Вот мои новые утверждения:

try
{
//attempt connection here
}
catch(SQLException | ClassNotFoundException e)
{
if (e instanceof SQLServerException && ((SQLServerException) e).getErrorCode() == 0)
{
//code here
}
else{
//code here
}
System.out.println(((SQLException) e).getErrorCode()); //Here is the print statement to see the error code.
if (e instanceof SQLServerException && ((SQLServerException) e).getErrorCode() == 4060)
{
//code here
}else{
//code here
}
if(cancel != true)
{
//code here
}
}


Подробнее здесь: https://stackoverflow.com/questions/174 ... tion-types
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»