Что такое разыменование нулевого указателя? - программирование
Подтвердить что ты не робот

Что такое разыменование нулевого указателя?

Я делаю программу для SFTP в NetBeans.

Часть моего кода:

com.jcraft.jsch.Session sessionTarget = null;
com.jcraft.jsch.ChannelSftp channelTarget = null;
try {
       sessionTarget = jsch.getSession(backupUser, backupHost, backupPort);
       sessionTarget.setPassword(backupPassword);
       sessionTarget.setConfig("StrictHostKeyChecking", "no");
       sessionTarget.connect();
       channelTarget = (ChannelSftp) sessionTarget.openChannel("sftp");
       channelTarget.connect();

       System.out.println("Target Channel Connected");
       } catch (JSchException e) {
            System.out.println("Error Occured ======== Connection not estabilished");
            log.error("Error Occured ======== Connection not estabilished", e);
       } finally {
            channelTarget.exit();     // Warning : dereferencing possible null pointer
            channelTarget.disconnect();  // Warning : dereferencing possible null pointer
            sessionTarget.disconnect();  // Warning : dereferencing possible null pointer
        }

Я получаю предупреждение dereferencing possible null pointer, как я могу разрешить эти предупреждения??? Где я могу отключить мои Session и Channel???

4b9b3361

Ответ 1

sessionTarget = jsch.getSession(backupUser, backupHost, backupPort); Здесь в этой строке метод getSession() может вызывать исключение, поэтому переменные sessionTarget и channelTarget будут равны нулю, а в блоке finally вы получаете доступ к этим переменным, что может вызвать исключение null указателя.

Чтобы избежать этого, в блоке finally проверьте значение null перед доступом к переменной.

finally {
  if (channelTarget != null) {
       channelTarget.exit();     
       channelTarget.disconnect();  
  }
  if (sessionTarget != null ) {
       sessionTarget.disconnect();  
  }
}

Ответ 2

Это означает: что, если ваши channelTarget и sessionTarget равны нулю в вашем блоке finally? Проверьте их на отсутствие, чтобы избежать предупреждения.

Ответ 3

Я думаю, что netbeans просто пытается предупредить вас, что они могут быть нулевыми, что не обязательно не обязательно. Однако вы можете отключить предупреждения. Просто наведите курсор на предупреждение, нажмите ALT+ENTER и выберите один из вариантов, даже чтобы отключить предупреждения.