Virheviesti: java.lang.NullPointerException - mitä tehdä?
Kääntäjä tarkistaa kirjoitetun ohjelman kaikesta paitsi yhdestä: ajoajan poikkeukset. Tällainen poikkeus on esimerkiksi NullPointerException, joka kuuluu Java-ohjelmointikielen olennaiseen pakettiin java.lang.
Milloin kääntäjä heittää java.lang.NullPointerException?
Poikkeuksia esiintyy usein testivaiheen aikana. Tämä koskee erityisesti NullPointerException-ohjelmaa, joka kohtataan yleensä aloittelijana ohjelmoinnin yhteydessä. Tarkemmin sanottuna se on muuttuja, joka osoittaa tyhjään esineeseen. Esimerkiksi virhe ilmenee seuraavissa tapauksissa:
- Kun taulukon elementtiin päästään ja elementillä ei ole arvoa.
- Kun kysytään taulukon pituutta, jonka arvo on nolla.
- Jos objekti luotiin ilman uutta operaattoria ja yritetään suorittaa toimintoja referenssimuuttujan avulla.
- Esimerkissämme kaukosäädin on käytännössä referenssimuuttuja (osoitin), joka osoittaa todelliseen tulostinobjektiin. Tätä muuttujaa käytetään suorittamaan toimintoja, kuten tulostamaan virheilmoituksia tulostimeen, laskemaan mustetasoja jne. Jos kaukosäädin osoittaa tyhjään esineeseen tai ei objektia, referenssimuuttujan arvo on nolla.
Kuinka korjata virhesanoma
Poikkeuksia voidaan pyydystää Java-kentällä " kokeile {...} kiinni {(poikkeus e)} " -lohkolla. Tämä menetelmä ei kuitenkaan ole aina välttämätön ja aiheuttaa myös ylimääräisiä kustannuksia. On parempi pitää seuraavat vinkit mielessä:
- Tarkista onko objekti luotu. Jos näin ei ole, luo se komennolla syntaksi " näyteobjektin nimi = uusi näyteobjekti (muuttujat); ".
- Debug-tilassa voit tarkistaa koodisi riviltä ja tarkastella välituloksia. Varmista, ettet kirjoita luomaasi objektia tai tallenna sitä NULL-arvolla. Tämä tarkoittaa, että objekti ei ole enää käytettävissä ja lisäobjektikomennot laukaisevat virheen.
- Vinkki: Jos vaihdat objektiasi usein, tottuneet tarkistamaan objekti ennen ja jälkeen perusteellisia muutoksia if-kyselyn avulla (" if (esimerkki objekti ! = NULL) {...} ").
Seuraavassa käytännön ohjeessa selitämme kuinka voit käyttää Lambda-lausekkeita Java-sovelluksessa.