Archief - JAVA hoe een nullpointer exception opvangen

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

bikkerss

Legacy Member
ik krijg de volgende melding nullpointer exception als ik onderstaande code probeer uit te voeren echter zie ik geen fout erin, hoe los ik dergelijke problemen op ?


vraagsteller_gemeente.setBackground(Color.white);

int teller=0;
String postcode[]=new String[1000];
String gemeente[]=new String[1000];
String provincie[]=new String[1000];


try {

dbfile=new File("inforegistratie.db3");
db=SqlJetDb.open(dbfile, true);
ISqlJetTable sqltabel = db.getTable("postcodes");

db.beginTransaction(SqlJetTransactionMode.READ_ONLY);
ISqlJetCursor lezer=sqltabel.lookup("toongemeente", vraagsteller_gemeente.getText());

lezer.first();

do
{
postcode[teller]=lezer.getValue(1).toString();
gemeente[teller]=lezer.getValue(2).toString();
provincie[teller]=lezer.getValue(3).toString();


teller++;
}while(lezer.next());

for(int i=0;i<=teller;i++)
{

if(gemeente.matches(vraagsteller_gemeente.getText().toString()))
{
vraagsteller_postcode.setText(postcode.toString());
vraagsteller_provincie.setText(provincie.toString());
// jComboBox1.addItem(gemeente.toString());
}
//
lezer.close();
db.close();
}




} catch (Exception e)
{
JOptionPane.showMessageDialog(rootPane,e);
}

forloRn_

Legacy Member
Hoe los je dergelijke problemen op? Door je code juist te schrijven.

Waarschijnlijk gebeurt het omdat je for-lus eentje te ver telt. Als je bijvoorbeeld drie rijen ophaalt, telt i van 0 tot en met 3, terwijl hij maar tot en met 2 mag tellen.

Die do-while zou ik ook vervangen door een gewone while. En de arrays door Lists.

lezer.close() en db.close() moet je trouwens in een finally block zetten.

Shaddix

Legacy Member
een nullpointer kan er alleen komen als jij "slecht" geprogrammeerd hebt
het is dus niet iets dat je wilt opvangen

bikkerss

Legacy Member
ok bedankt, tja over dat slecht programmeren kun je wel gelijk hebben :-) maar een mens moet ergens beginnen he

bikkerss

Legacy Member
hij gaat blijkbaar gewoon m'n for lus niet binnen, iemand een idee waarom ?

Timmos

Legacy Member
bikkerss zei:
hij gaat blijkbaar gewoon m'n for lus niet binnen, iemand een idee waarom ?
Een exceptie die gebeurt voor de for-lus? Want de conditie lijkt me in orde om binnen te gaan.

Curahee Q

Legacy Member
Maar op welke regel geeft hij de exception en welke regel is dat?

bikkerss

Legacy Member
hij geeft enkel de exception als ik een exception in m'n catch zet (de code die hij moet uitvoeren op focuslost doet ie blijkbaar niet hij gaat blijkbaar de for lus niet in

Curahee Q

Legacy Member
Vervang dit eens
catch (Exception e)
{
JOptionPane.showMessageDialog(rootPane,e);
}

in
catch (Exception e)
{
e.printStackTrace();
}

voltje

Legacy Member
for(int i=0;i<=teller;i++)

moet zoiezo
for(int i=0;i<teller;i++)
zijn

en hij moet zoiezo je forlus ingaan he...
test keer hoeveel teller is eigenlijk...
want misschien gaat het fout bij uw "lezer" en is er geen lezer.Next()
en dan voert hij de do while ni uit en dus zoiezo ook de forlus niet omdat teller 0 is...

Curahee Q

Legacy Member
Een method die met een hoofdletter begint kan volgens mij volgens de java conventies al niet. Het zal dus eerder lezer.next() zijn.

Curahee Q

Legacy Member
Beginnen de methods in C# wel met hoofdletters? Nog nooit in geprogrammeerd eigenlijk (ja zo is een Hello World programma maar voor de rest...)

voltje

Legacy Member
@TS: hebde al is gekeken wa de waarde van uw teller is voor de for lus

Shaddix

Legacy Member
bikkerss zei:
ok bedankt, tja over dat slecht programmeren kun je wel gelijk hebben :-) maar een mens moet ergens beginnen he

uiteraard, daarom dat ik de slecht ook tussen haakjes zette ;)
ik zie ook af en toe nog een nullpointerexception op men scherm verschijnen hoor :p

D3vilke

Legacy Member
kan het niet zijn dat het resultaat van je query leeg is, waardoor hij in de do komt en de lezer null is, aangezien de while pas op t einde staat...?

Jerre Muesli

Legacy Member
Idd lijkt mij ook zoiets. Vervangen door een while(){} ipv do{}while()

Catscratch

Legacy Member
Shaddix zei:
een nullpointer kan er alleen komen als jij "slecht" geprogrammeerd hebt
het is dus niet iets dat je wilt opvangen

In heel uitzonderlijke gevallen wel ze. Maar idd in 99.9% is het catchen van een nullpointerexception te wijten aan slechte code. ;)
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan