@MishaXXL

Как правильно обрабатывать SQLException?

Как правильно обрабатывать SQLошибки SQLException?
В SQLExceptionесть метод getSQLState, который отвечает в виде кодов 42P01, 08003
Эти коды являются постоянными и при обработке ошибки стоит ссылаться на них?

Соединение с БД
08003- Connection to localhost:5400 refused. или This connection has been closed.

Неправильный запрос
42P01 - ERROR: relation "userz" does not exist

catch(SQLException ex) {
    System.out.println("SQLException ex: " + ex);
    System.out.println("SQLException: " + ex.getSQLState());

    // таким образом обрабатывается ошибка подключения к БД, ссылаясь на значение ex.getSQLState()?
    if(ex.getSQLState().equals("08003")) {
        removeConnection();
    }
}


На стековерфлоу приводится пример с equals
https://stackoverflow.com/questions/26383624/postg...
final String ss = ex.getSQLState();
  if (ss.equals("40001") || ss.equals("40P01"))


А в одной из статей сравнение по ссылке
https://www.sohamkamani.com/java/jdbc-postgresql/
String errorCode = e.getSQLState();
            // 08000 - connection_exception
            if (errorCode == "08000") {}


Здесь выбор вкуса или какое-то решение правильнее?
Так же у них коды почему-то отличаются от моих
  • Вопрос задан
  • 139 просмотров
Решения вопроса 1
mayton2019
@mayton2019 Куратор тега Java
Bigdata Engineer
Скорее всего коды SQL ошибок зависят от DBMS. Например я по старой памяти помню что если
в коде вы видите ORA-00001 то вы скорее всего используете Oracle и ваша ошибка
связана с нарушением Primary KEY во время INSERT/UPDATE.

Другие DBMS (Postgres/MySQL) будут иметь другие коды ошибок.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы