Анализатор обнаружил обращение к объекту Optional, который в свое время является потенциально пустым. В таком случае будет исключение 'NoSuchElementException'.
Рассмотрим пример:
PClient getClient(boolean cond, String name, String company, /*args*/) { Optional<PClient> optClient = cond ? Optional.of(new PClient(name, company)) : Optional.empty(); ... PClient pClient = optClient.get(); ... return pClient; }
После выполнения первой строки, объект 'optClient' в зависимости от условия может инициализироваться пустым Optional. В таком случае, строчка 'optClient.get()' без проверки вызовет исключение. Это могло возникнуть по невнимательности или после рефакторинга. Как вариант, можно исправить код следующим образом:
PClient getClient(boolean cond, String name, String company, /*args*/) { Optional<PClient> optClient = cond ? Optional.of(new PClient(name, company)) : Optional.empty(); ... if (optClient.isPresent()) { PClient pClient = optClient.get(); ... return pClient; } else { return null; } }
Данная диагностика классифицируется как:
Взгляните на примеры ошибок, обнаруженных с помощью диагностики V6036. |