Java попробуйте с нулевой проверкой ресурса inputtream - PullRequest
2 голосов
/ 05 октября 2019

Может кто-нибудь помочь при попытке с ресурсом в Java

try(InputStream inputStream = new FileInputStream(new File(some file)))
{
     if(inputStream == null)       //Line 3
     {
      }
}
catch(IOException e)
{
}

Я хочу знать, необходимо ли проверять ноль в строке 3. Будут ли какие-либо ситуации или обстоятельства, когда inputStream может быть нулем в строке3?

Ответы [ 2 ]

2 голосов
/ 05 октября 2019

Учитывая ваш код, no:

InputStream inputStream = new FileInputStream(new File(some file)) будет выполнено до содержимого блока try. Либо это удастся, поэтому inputStream не будет null, либо произойдет сбой, вызывая исключение в процессе, поэтому содержимое блока try никогда не будет выполнено.

1 голос
/ 05 октября 2019

Я хочу знать, нужно ли проверять ноль в строке 3.

Нет. Пока вы сохраняете выражение new FileInputStream(new File("path/to/file")), результатом будет ненулевой объект FileInputStream. Проверка в строке 3 не нужна.

Будут ли какие-либо ситуации или обстоятельства, когда inputStream может быть нулевым в строке 3?

Да. Если вы присваиваете любое выражение, которое возвращает null для inputStream. Это не очень практично, так как вы ничего не можете сделать с потоком, кроме проверки на нуль. В этом случае может пригодиться проверка в строке 3.

Например,

try (InputStream s = null) {}
catch (IOException e) {}
...