Логически, я в Вами согласен.
Но в документации написано следующее:
public class NullPointerException
extends RuntimeException
Thrown when an application attempts to use null in a case where an object is required. These include:
Calling the instance method of a null object.
Accessing or modifying the field of a null object.
Taking the length of null as if it were an array.
Accessing or modifying the slots of null as if it were an array. Link
Этим я и руководствуюсь. В то же время о IllegalArgumentException написано
Thrown to indicate that a method has been passed an illegal or inappropriate argument. Link
Следует, что NullPointerException все-таки нужно бросать.
Потому что для аргумента null есть специальное исключение. NullPointerException это частный случай IllegalArgumentException. IllegalArgumentException нужно использовать, если значение, например, отрицательное или недопустимое.
www.windowsphone.com/ru-ru/store/app/%D1%85%D0%B0%D1%80%D1%8C%D0%BA%D0%BE%D0%B2-%D0%B3%D0%B8%D0%B4/bdbead11-aa64-481a-9ac2-abf3b165134b
Но в документации написано следующее:
public class NullPointerException
extends RuntimeException
Thrown when an application attempts to use null in a case where an object is required. These include:
Calling the instance method of a null object.
Accessing or modifying the field of a null object.
Taking the length of null as if it were an array.
Accessing or modifying the slots of null as if it were an array. Link
Этим я и руководствуюсь. В то же время о IllegalArgumentException написано
Thrown to indicate that a method has been passed an illegal or inappropriate argument. Link
Следует, что NullPointerException все-таки нужно бросать.
А вот для NullPointerException есть конкретные случаи (см. ссылку).