====== Házet či neházet NullPointerException ====== Výjimka NullPointerException (zkráceně NPE) je vyhozena runtimem javy ve chvíli, kdy se nad null hodnotou virtuální stroj pokusí vyvolat metodu, přistoupit k prvku nebo u pole k atributu length, případně když se pokusíme o obrat //throw null//. Dokumentace nabádá k využití této výjimky také v //jiných případech špatného použití hodnoty null//. Často ale vidím toto: public xxx(String str) { if (str == null) { throw new NullPointerException("Cannot be null"); } } V tomto případě je sice všechno v pořádku, ale sémantika NPE je poněkud odlišná, alespoň takhle to chápu já -- obvykle vyjadřuje, že je něco **opravdu špatně** a v podstatě by k ní nemělo vůbec dojít. Jedná se o chybu programátora, když zákazník uvidí tuto výjimku někde v logu nebo přímo v programu (už jste ji také jistě viděli). Může to polekat, nejen uživatele, ale například jiného člena týmu, když výjimku spatří v záznamech JUnitu. Proto v těchto případech, kdy se kontrolují vstupní parametry metod (velmi dobrý návyk, který je důležitý), bych vyhazoval jednu z výjimek **IllegalArgumentException** nebo v některých případech **IllegalStateException**. Jasně dokumentují jen svým názvem, kde se stala chyba a programátor v podstatě ihned začíná tušit, kde hledat. K vyhození NPE musí být dobrý důvod. Vážný důvod. {{tag>java}} ~~DISCUSSION~~