Java PostgreSQL: подавить вывод ошибок при сбое подключения - PullRequest
0 голосов
/ 25 июня 2018

Я подключаюсь к базе данных postgreSQL с помощью Java.

Пользователь вводит имя пользователя и пароль в командной строке, а затем я проверяю соединение. Я поставил вокруг него блок try-catch, но он все равно печатает сообщение об ошибке при сбое соединения. Я не хочу, чтобы пользователь видел это сообщение, я просто хочу обработать ошибку самостоятельно, что обычно может быть достигнуто с помощью конструкции try-catch. Однако, в этом конкретном случае сообщение все равно будет напечатано. Как я могу подавить сообщение здесь?

Соответствующий код:

import java.sql.*;

public class ChessDatabase {

    private Connection chessDB;
    private String username;
    private String password;

    ChessDatabase(String username, String password) {
        this.username = username;
        this.password = password;
    }

    public boolean isConnected() {
        try {
            chessDB = DriverManager.getConnection("jdbc:postgresql://[...]", username, password);
        } catch (Exception e) {
            return false;
        }
        return true;
    }
}

Сообщение об ошибке:

Jun 25, 2018 3:38:24 PM org.postgresql.core.v3.ConnectionFactoryImpl log
WARNING: SQLException occurred while connecting to [...]
org.postgresql.util.PSQLException: FATAL: PAM authentication failed for user "[...]"
    at org.postgresql.core.v3.ConnectionFactoryImpl.doAuthentication(ConnectionFactoryImpl.java:473)
    at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:205)
    at org.postgresql.core.ConnectionFactory.openConnection(ConnectionFactory.java:49)
    at org.postgresql.jdbc.PgConnection.<init>(PgConnection.java:195)
    at org.postgresql.Driver.makeConnection(Driver.java:452)
    at org.postgresql.Driver.connect(Driver.java:254)
    at java.sql/java.sql.DriverManager.getConnection(DriverManager.java:677)
    at java.sql/java.sql.DriverManager.getConnection(DriverManager.java:228)
    at ChessDatabase.isConnected(ChessDatabase.java:35)
    [...]
Jun 25, 2018 3:38:24 PM org.postgresql.Driver connect
SEVERE: Connection error: 
org.postgresql.util.PSQLException: FATAL: PAM authentication failed for user "[...]"
    at org.postgresql.core.v3.ConnectionFactoryImpl.doAuthentication(ConnectionFactoryImpl.java:473)
    at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:205)
    at org.postgresql.core.ConnectionFactory.openConnection(ConnectionFactory.java:49)
    at org.postgresql.jdbc.PgConnection.<init>(PgConnection.java:195)
    at org.postgresql.Driver.makeConnection(Driver.java:452)
    at org.postgresql.Driver.connect(Driver.java:254)
    at java.sql/java.sql.DriverManager.getConnection(DriverManager.java:677)
    at java.sql/java.sql.DriverManager.getConnection(DriverManager.java:228)
    at ChessDatabase.isConnected(ChessDatabase.java:35)
    [...]

PS: Просто для пояснения, соединение работает и сообщение об ошибке не выводится, если имя пользователя и пароль верны. Так что проблема не в том, чтобы избавиться от ошибки, а только в сообщении.

1 Ответ

0 голосов
/ 25 июня 2018

Благодаря ссылке, предоставленной JB Nizet, я обнаружил, что могу добавить "?loggerLevel=OFF" к первому параметру в DriverManager.getConnection().Таким образом, сообщение не будет напечатано.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...