Vitajte na [www.pocitac.win] Pripojiť k domovskej stránke Obľúbené stránky

Domáce Hardware Siete Programovanie Softvér Otázka Systémy

Čo je Null Pointer Exception

? Každý Java programátor nakoniec píše program , ktorý produkuje " NullPointerExceptions " chybové hlásenie . To je obzvlášť mystický pre tých , ktorí začínajú svoju kariéru programovanie učenie Java , ktorý nevystavuje programátorov k pojmu ukazovateľ . Ukazovatele

ukazovateľ je počítačová veda termín pre premennú , ktorá , miesto konania nejaké informácie , je držiteľom adresu , kde možno tieto informácie nájsť v pamäti počítača . Môžete si predstaviť premennú ako ukazovateľ , že " body " , kde možno nájsť informácie . V jazykoch ako C + + programátor musí urobiť explicitné voľbu o tom , či daná premenná bude držať informácie priamo alebo sa miesto držať ukazovateľ na informácie a táto voľba môže mať zásadný vplyv na efektivitu programu . Napríklad , v prípade , že daná trieda má niekoľko megabajtov hodnote informácií , ktoré musia byť odovzdané do funkcie , je oveľa účinnejšie , čím sa získa funkciou je ukazovateľ , ako kopírovať všetky informácie priamo . Celým

Java súčiastky programátorov túto dilemu a chyby to môže produkovať skrytím ukazovatele z programátora .
Null

Null je ďalší špeciálny termín v informatike . To sa odkazuje na premennú , ktorá doslova neobsahuje žiadnu informáciu . Do niektoré informácie je priradený k nej , to je povedal , aby bol rovný null . Napríklad v nasledujúcom kóde :

String s , s = new String ( ) ;

Po prvý riadok je ukončený , " s " je rovné null . Potom, čo druhý riadok je ukončený , " s " je rovná prázdny reťazec .
Null ukazovatele

Hoci Java sa snažia skryť odkazy z programátorom , je tam jeden prípad , kedy to nie je možné urobiť . Všetky triedy sú vlastne ukazovatele na pamäťových miest, kde možno nájsť údaje pre triedu . To robí to rýchlejšie , keď triedy musia byť odovzdané do a von z funkcií . Avšak , vo vyššie uvedenom príklade , po prvom riadku je spustený , ukazovateľ bolo vyčlenených pre " s " , ale žiadne dáta bola vytvorená . " S " nemá pamäť vyňatej z produkcie pre neho , tak to je " nulový ukazovateľ . "
Null Pointer Výnimky

Teraz , keď viete , čo nulový ukazovateľ je , zvážte nasledujúce dva riadky kódu :

String s , s.charAt ( 0 ) , //Získať prvý znak reťazca

kód žiada pre prvý znak . reťazec , objekt , ktorý jednoducho neexistuje . Inými slovami , je to žiada nemožné . Akonáhle k tomu dôjde , Java uvedomuje problém a hodí " NullPointerException " , aby užívateľ alebo programátor vie , že sa niečo pokazilo .
Príklad

Most Java programátori by nikdy vyššie chybu : vedia , že objekty , ako sú reťazce musia byť inicializovaný s " novým " príkazu . Avšak , zvážte nasledovné funkcie :

public void tlač ( String s ) { System.out.println ( y ) ; }

Spočiatku tento kód vyzerá v poriadku : funkcia prijíma reťazec od inde v programe a vytlačí ju na obrazovku . Avšak to , čo v prípade , že osoba , beží funkciu poslal je reťazec , ktorý nebol správne inicializovaný ? NullPointerException by sa hodil .
ClipArt ladenie a prevencia

Prvým krokom k prevencii NullPointerExceptions je zabezpečiť , aby nové triedy objektov sú vždy riadne inicializovaný . Avšak , nikto nie je dokonalý , takže Druhým krokom je dostať do zvyk výkonu dát policajný na funkcie . Prichádzajúce údaje by mali byť vždy považované za nedôveryhodné , tak nasledujúce zmeny mohli byť vykonané :

public boolean tlače ( String s ) { try { System.out.println ( y ) ; return true ; //nechať v pokoji . programu vedieť , operácia bola úspešná } catch ( NullPointerException e ) { return false ; . //Nech zvyšok programu vedieť , operácia zlyhala } }

Výhodou tohto aktívneho prístupu je , že zvyšok programu možno zapísať , kto ohodnotil , ako vážny problém je , skôr než okamžite zlyhať a poskytnúť užívateľovi škaredú a tajomnú chybové hlásenie .

Najnovšie články

Copyright © počítačové znalosti Všetky práva vyhradené