В этом коде.
public class Test {
public static void testFun(String str) {
if (str == null | str.length() == 0) {
System.out.println("String is empty");
} else {
System.out.println("String is not empty");
}
}
public static void main(String [] args) {
testFun(null);
}
}
Мы передаем нулевое значение функции testFun
. Компилируется нормально, но дает nullPointerException
во время выполнения.
Предположим, что значение фактического аргумента, передаваемого testFun
, генерируется из какого-то процесса. Предположим, что по ошибке этот процесс возвращает нулевое значение и передается в testFun. Если это так, как можно проверить, что значение, переданное функции, равно нулю или нет?
Одним (странным) решением может быть присвоение формального параметра некоторой переменной внутри функции и последующее ее тестирование. Но если в функцию передано много переменных, это может стать утомительным и неосуществимым. Итак, как можно проверить нулевые значения в таком сценарии?
Редактировать: по ошибке я написал || вместо | в условии if. Теперь генерируется исключение во время выполнения