Hai notato java.lang.NullPointerException (NPE)? 8 migliori pratiche per evitare NPE di runtime in Java

Pubblicato: 2020-10-07
Hai notato java.lang.NullPointerException (NPE)? 8 migliori pratiche per evitare NPE di runtime in Java

Evitare Null Pointer Exception in Java e Java Suggerimenti e procedure consigliate per evitare NullPointerException in Java.

Come sviluppatore Java, sono sicuro che devi aver affrontato Null Pointer Exception (NPE) a partire dal 1° giorno. Nella maggior parte dei casi l'eccezione NPE mostra una chiara traccia dello stack che indica la causa principale dello stesso, ma in caso di applicazioni di livello Enterprise di grandi dimensioni in cui hai centinaia di classi, diventa un incubo scoprire la vera causa principale.

Che cos'è l'eccezione del puntatore nullo (NPE)?

NullPointerException (NPE) è un'eccezione che si verifica quando si tenta di utilizzare un riferimento che non punta a nessuna posizione in memoria (null) come se facesse riferimento a un oggetto.

La chiamata a un metodo su un riferimento null o il tentativo di accedere a un campo di un riferimento null attiverà un NPE. Questa è la causa più comune.

Secondo JavaDoc, di seguito sono riportate le principali cause di NPE:

  • Lanciando null come se fosse un valore Throwable .
  • Chiamare il metodo di istanza di un oggetto null .
  • Accesso o modifica del campo di un oggetto null .
  • Prendendo la lunghezza di null come se fosse un array.
  • Accedere o modificare gli slot di null come se fosse un array.

Ora la vera domanda è come evitare java.lang.NullPointerException in runtime? In questo tutorial esamineremo alcuni esempi che creano NPE in fase di esecuzione e i passaggi che dobbiamo eseguire per risolverlo.

Creiamo NPE al runtime 1st. Dai un'occhiata all'esempio seguente CrunchifyNullPointerExceptionTips.java

Creeremo NPE 3 modi diversi

  1. NPE verrà generato se stai tentando di accedere a null Object
  2. NPE verrà generato se stai cercando di convertire String null
  3. NPE verrà generato se si sta tentando di accedere a null Object durante l'inizializzazione della classe

Crea classe CrunchifyNullPointerExceptionTips.java

Risultato:

Bene, ci sono alcuni suggerimenti e trucchi che potremmo usare per evitare NullPointerException in fase di esecuzione. Diamo un'occhiata.

Suggerimento 1:

Eclipse / IntelliJ IDE proverà a mostrare NPE nell'area di lavoro. Correggi il codice solo durante lo sviluppo.

Suggerimento puntatore nullo in Eclipse

Suggerimento 2:

Aggiungi crunchifyI sNullorEmpty () prima di un'operazione sull'oggetto. Aggiungilo a CrunchifyNullPointerExceptionTips.java

Nella precedente riga di programma java 55 e 56 verranno sostituite con questa.

Suggerimento 3:

Controlla se String è null di vuoto dopo l'operazione trim().

Suggerimento 4:

Utilizzare sempre il Try Catch block per prevenire un processo di runtime ininterrotto.

Suggerimento 5:

Collections.emptyList() è preferito per una migliore gestione dei generici.

Suggerimento 6:

Usa Java Assertions

Un'asserzione è un'affermazione che ti consente di testare le tue ipotesi sul tuo codice. Ad esempio, se si scrive un metodo che restituisce il nome nel sistema, è possibile affermare che la restituzione di otherName se String è null.

L'uso di base delle asserzioni sarebbe:

Ma c'è un problema: l'asserzione non è disponibile nell'ambiente di produzione e non dovremmo usare l'asserzione con alcuna logica di business.

Suggerimento 7:

Prova a utilizzare i controlli containsKey() , containsValue() , contains() .

Suggerimento 8:

In conclusione, è sempre buona norma occuparsi di NPE durante lo sviluppo piuttosto che eseguire il debug in produzione in fase di runtime. Ci sono molti altri suggerimenti e trucchi disponibili usando Spring Framework Annotation, Factory Pattern , Null Object Pattern ecc. Ma ora taglierò questo corto.

Pubblicherà un nuovo tutorial probabilmente tra una settimana su questo. Rimani sintonizzato.

Vuoi aggiungere qualcosa a questo tutorial O hai riscontrato un problema, per favore intervieni e fornisci i tuoi commenti.