Excepció de punter nul a Java: implementació i exemples



Aquest article us proporcionarà un coneixement detallat i complet de com funciona l'excepció de punter nul a Java amb molts exemples.

Es necessiten excepcions per a la correcta execució del codi i informeu els programadors de l'error que s'ha de resoldre. En aquest article, ens centrarem en l'excepció de punter nul a Java en l'ordre següent:

Què és l'excepció de punter nul a Java?





L'excepció de punter nul a Java és una excepció en temps d'execució. Al món de Java, s’assigna un valor nul especial a una referència d’objecte. L’excepció del punter nul s’introdueix quan un programa intenta utilitzar una referència d’objecte que té el valor nul. Quins poden ser:

  • Invocar un determinat mètode des d’un objecte nul.
  • Per accedir o modificar el camp d’un objecte nul.
  • En considerar la longitud de nul, com si es tractés d’una matriu.
  • Mentre s’accedeix o modifica les ranures d’un objecte nul.
  • Llançament nul com un valor llançable.
  • Intentant sincronitzar sobre un objecte nul.

Per què necessitem el valor nul?



Null és un valor únic utilitzat a Java. Nul s’utilitza per mostrar que no s’assigna cap valor a una variable de referència. L’aplicació principal de null rau en implementar estructures de dades com llistes enllaçades i arbres. Algunes altres aplicacions inclouen patrons d'objectes nuls i patrons singleton. Un patró de singleton especifica que només es pot iniciar una instància d'una classe i té com a objectiu proporcionar un punt d'accés global a l'objecte.

La millor manera i senzilla de crear almenys una instància d'una classe és declarar tots els constructors com a privats. A continuació, creen un mètode públic que retorna la instància única de la classe.

com compilar programes Java
// Per utilitzar la funció randomUUID. import java.util.UUID import java.io. * class Singleton {// Aquí inicialitzem els valors de single i ID a null. private static Singleton single = null private String ID = null private Singleton () {/ * Feu-lo privat, per evitar la creació de noves instàncies de la classe Singleton. * / // Creeu un ID aleatori = UUID.randomUUID (). ToString ()} públic estàtic Singleton getInstance () {if (single == null) single = new Singleton () return single} public String getID () {return this.ID}} // Codi del controlador classe pública TestSingleton {public static void main (String [] args) {Singleton s = Singleton.getInstance () System.out.println (s.getID ())}} //

Sortida:



null-pointer

L'exemple anterior és una instància estàtica de la classe singleton. La instància s’inicialitza com a màxim una vegada dins del mètode Instance get Singleton.

passa per valor i passa per referència java

Com evitar l'excepció del punter nul a Java?

Per evitar l'excepció del punter nul a Java, hem d'assegurar-nos que tots els objectes estiguin inicialitzats correctament abans d'utilitzar-los. Quan es declara una variable de referència, hem de verificar que un objecte no sigui nul i abans de sol·licitar mètodes o camps als objectes. A continuació es detallen alguns problemes amb les seves solucions corresponents per superar aquest problema.

// programa per demostrar la invocació d’un mètode // on null provoca la importació de NullPointerException java.io. * classe GFG {public static void main (String [] args) {// Inicialització de la variable String amb valor nul String ptr = null // Comprovar si ptr.equals és nul o funciona bé. try {// Aquesta línia de codi genera NullPointerException // perquè ptr és nul si (ptr.equals ('gfg')) System.out.print ('Same') en altre cas System.out.print ('Not Same')} catch (NullPointerException e) {System.out.print ('NullPointerException Caught')}}}

Sortida:

Comprovació dels arguments d'un mètode

Recordeu sempre que abans d’executar el cos d’un mètode nou, hauríem de garantir els seus arguments per obtenir valors nuls i continuar amb l’execució del mètode. Si i només quan es comproven correctament els arguments. Altrament, llançarà una 'IllegalArgumentException' i cridarà al mètode de trucada que alguna cosa no funciona amb els arguments aprovats.

// programa per comprovar si els paràmetres són nuls o no abans // d’utilitzar-los. import java.io. * class GFG {public static void main (String [] args) {// String s defineix una cadena buida i crida a getLength () String s = 'intenta {System.out.println (getLength (s)) )} catch (IllegalArgumentException e) {System.out.println ('IllegalArgumentException caught')} // String s set to a value and calling getLength () s = 'GeeksforGeeks' try {System.out.println (getLength (s)) )} catch (IllegalArgumentException e) {System.out.println ('IllegalArgumentException caught')} // Establint s com a nul i cridant getLength () s = nul prova {System.out.println (getLength (s))} catch ( IllegalArgumentException e) {System.out.println ('IllegalArgumentException atrapat')}} // Funció per retornar la longitud de la cadena s. Llança // IllegalArgumentException si s és nul. public static int getLength (String s) {if (s == null) llança una nova excepció IllegalArgumentException ('L'argument no pot ser nul') retorna s.length ()}}

Sortida:

Ús de l’operador ternari

apache spark vs hadoop mapreduce

S’utilitza un operador ternari per evitar NullPointerException. Es comprova l'expressió booleana i, si l'expressió és certa, es retorna el valor1; en cas contrari, es retorna el valor2. Es pot utilitzar l'operador ternari per al maneig de punteres nuls: La imatge correcta és la sortida corresponent.

// Un programa Java per demostrar que podem utilitzar // operador ternari per evitar NullPointerException. import java.io. * class GFG {public static void main (String [] args) {// Inicialitzant la variable de cadena amb valor nul String str = null Missatge de cadena = (str == null)? '': str.substring (0,5) System.out.println (message) str = 'Edureka_Java_Blog' message = (str == null)? '': str.substring (0,5) System.out.println (missatge)}}

Sortida:

Edurek

Amb això, arribem al final de Null Pointer Exception a Java. Espero que tingueu una idea de Null Pointer Exception.

Consulteu el per Edureka, una empresa d'aprenentatge en línia de confiança amb una xarxa de més de 250.000 estudiants satisfets repartits per tot el món. El curs de formació i certificació Java J2EE i SOA d’Edureka està dissenyat per a estudiants i professionals que vulguin ser desenvolupador de Java. El curs està dissenyat per donar-vos un avantatge en la programació de Java i formar-vos tant per conceptes bàsics com avançats de Java, juntament amb diversos marcs Java com Hibernate i Spring

Tens alguna pregunta? Si us plau, mencioneu-lo a la secció de comentaris d’aquest bloc “Excepció de punter nul a Java” i us respondrem el més aviat possible.