[JAVA] Exceptie achterhalen

Pagina: 1
Acties:
  • 149 views sinds 30-01-2008
  • Reageer

Acties:
  • 0 Henk 'm!

  • jvaneijk
  • Registratie: Mei 2003
  • Laatst online: 29-05 12:10
Beste gotters,

Ik zit met een vraagje, ik heb een stukje code geschreven en heb nu het idee dat ik buiten de bounds van mijn array treedt. Hoe kan ik zien welke Exceptie er wordt gegeven ik gebruik JBuilder X en ik wil dus weten wat de fout is die hij geeft.

Hier heb ik de shit die JBuilder geeft

Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
java.lang.NullPointerException

    at test.Applet1.toon(Applet1.java:116)

    at test.Applet1$KnopHandler.actionPerformed(Applet1.java:153)

    at java.awt.Button.processActionEvent(Button.java:382)

    at java.awt.Button.processEvent(Button.java:350)

    at java.awt.Component.dispatchEventImpl(Component.java:3615)

    at java.awt.Component.dispatchEvent(Component.java:3477)

    at java.awt.EventQueue.dispatchEvent(EventQueue.java:456)

    at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:201)

    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:151)

    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:145)

    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:137)

    at java.awt.EventDispatchThread.run(EventDispatchThread.java:100)



En nu is mijn vraag dus hoe kan ik zien welke fout wordt gegenereerd want van het gene dat JBuilder zegt wordt ik niet echt wijs uit want dat zijn allemaal verweizingen naar bibliotheken van JAVA.

iRacing Profiel


Acties:
  • 0 Henk 'm!

  • bigbeng
  • Registratie: Augustus 2000
  • Laatst online: 26-11-2021
Regel 1 en regel 3 lijken me anders behoorlijk duidelijk wat betreft de lokatie en reden van de fout.

edit:
Nullpointer fouten komen meestal doordat je methodes of properties van een object probeert te benaderen voordat het object geinitialiseerd is. Geef anders de code van de methode toon eens.

[ Voor 50% gewijzigd door bigbeng op 08-12-2004 11:16 ]


Acties:
  • 0 Henk 'm!

  • whoami
  • Registratie: December 2000
  • Laatst online: 13-09 23:21
Die info kan je gebruiken bij het debuggen van je programma.

https://fgheysels.github.io/


Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 13-09 09:39

Janoz

Moderator Devschuur®

!litemod

Heb je al eens gekeken op regel 116 in je eigen Applet1.java?

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Acties:
  • 0 Henk 'm!

  • jvaneijk
  • Registratie: Mei 2003
  • Laatst online: 29-05 12:10
bigbeng schreef op woensdag 08 december 2004 @ 11:14:
Regel 1 en regel 3 lijken me anders behoorlijk duidelijk wat betreft de lokatie en reden van de fout.

edit:
Nullpointer fouten komen meestal doordat je methodes of properties van een object probeert te benaderen voordat het object geinitialiseerd is. Geef anders de code van de methode toon eens.
Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
void toon(int vraagNr)
  //Deze methode toont de bijbehorende vraag en antwoorden bij het vraagNr wat wordt opgegeven op het scherm
  {
    //Hier wordt de nieuwe tekst aan het Label lblVraag toegekend
    lblVraag.setText(vraag[vraagNr].getVraag());

    //Hier krijgt aantalAntwoorden de lengte van de ArrayList antwoorden behorende bij een bepaald vraagNr
    aantalAntwoorden = vraag[vraagNr].getAantalAntwoorden();

    //Definieren van een Array van Checkboxes met als aantal het hiervoor aangegeven aantalAntwoorden
    ant = new Checkbox[aantalAntwoorden];

    //Toevoegen van het Label lblVraag aan de Applet
    add(lblVraag);
    for(int i = 0; i < aantalAntwoorden; i++)
    //for lus om de Array van Checkboxes te vullen met alle antwoorden voor een bepaalde vraag en deze toe te voegen aan de Applet
    {
      ant[i] = new Checkbox(vraag[vraagNr].getAntwoord(i), groep, false);
      add(ant[i]);
    }

  }


hier de code die in toon() staat

regel 5 in dit blok is regel 116 in de fout dus volgens mij heb ik een ArrayIndexOutOfBounds maar dat zie ik nergens

iRacing Profiel


Acties:
  • 0 Henk 'm!

  • bigbeng
  • Registratie: Augustus 2000
  • Laatst online: 26-11-2021
Voor array indexen out of bounds heeft Java hele mooie andere exceptions. Ik vermoed dat de waarde op de lokatie in je array gewoon null is.

Acties:
  • 0 Henk 'm!

  • whoami
  • Registratie: December 2000
  • Laatst online: 13-09 23:21
vraag[vraagNr] zal naar een niet geinitialiseerd element in je array verwijzen, en je zal NULL uitlezen waardoor het spul crasht.
Nu is het aan jou om uit te zoeken waarom.

https://fgheysels.github.io/


Acties:
  • 0 Henk 'm!

  • jvaneijk
  • Registratie: Mei 2003
  • Laatst online: 29-05 12:10
whoami schreef op woensdag 08 december 2004 @ 11:27:
vraag[vraagNr] zal naar een niet geinitialiseerd element in je array verwijzen, en je zal NULL uitlezen waardoor het spul crasht.
Nu is het aan jou om uit te zoeken waarom.
Ik verhoog door het drukken op volgende vraagNr dus daarom zou hij buiten die geinitialiseerde Array komen, heb ik zo het idee

Maar volgens mij is met ArrayOutOfBounds kan ik hem toch wel afvangen of niet?

iRacing Profiel


Acties:
  • 0 Henk 'm!

  • whoami
  • Registratie: December 2000
  • Laatst online: 13-09 23:21
Ik zeg niet dat hij buiten de array gaat.
Ik zeg dat je een niet ge-initializeerd element van die array uitleest. Het element van de array die je uitleest, zal NULL bevatten.

https://fgheysels.github.io/


Acties:
  • 0 Henk 'm!

  • bigbeng
  • Registratie: Augustus 2000
  • Laatst online: 26-11-2021
Nee, het is een NullPointerException. Dat staat ook bovenin je StackTrace.
Wat whoami en ik zeggen is de meest waarschijnlijke optie, probeer dat eerst eens even te verifieren.

offtopic:
Zin om een bedrijfje in het debuggen op het droge te beginnen whoami? :P

[ Voor 23% gewijzigd door bigbeng op 08-12-2004 11:40 ]


Acties:
  • 0 Henk 'm!

  • whoami
  • Registratie: December 2000
  • Laatst online: 13-09 23:21
bigbeng schreef op woensdag 08 december 2004 @ 11:38:

offtopic:
Zin om een bedrijfje in het debuggen op het droge te beginnen whoami? :P
offtopic:
Ok.
Zend maar al jullie defecte code, we debuggen ze voor je voor een prikje.
Gaan we tarificeren per lijn code of per uur ?

https://fgheysels.github.io/


Acties:
  • 0 Henk 'm!

  • jvaneijk
  • Registratie: Mei 2003
  • Laatst online: 29-05 12:10
whoami schreef op woensdag 08 december 2004 @ 11:36:
Ik zeg niet dat hij buiten de array gaat.
Ik zeg dat je een niet ge-initializeerd element van die array uitleest. Het element van de array die je uitleest, zal NULL bevatten.
Oke idd dat klopt maar ik dan gewoon een tre catch doen zoals hieronder.

Java:
1
2
3
4
5
6
7
8
try
{
   //code waar het fout kan gaan
}
catch(NullPointerException e)
{
   //voer code uit
}

iRacing Profiel


Acties:
  • 0 Henk 'm!

  • bigbeng
  • Registratie: Augustus 2000
  • Laatst online: 26-11-2021
Dat zou kunnen, maar los je daarmee het probleem op, of verhelp je alleen het symptoom? Blijft de knop je vraagnummer nog wel ophogen en is dat de bedoeling?

Het lijkt mij dat je ervoor kunt zorgen dat de Exceptie uberhaupt niet optreedt en dat zou dan toch de voorkeur hebben, nietwaar?

offtopic:
@whoami: per statement, want anders gaan die elcheapos hier al hun code op 1 regel proppen :)

Acties:
  • 0 Henk 'm!

  • whoami
  • Registratie: December 2000
  • Laatst online: 13-09 23:21
jvaneijk schreef op woensdag 08 december 2004 @ 11:50:
[...]


Oke idd dat klopt maar ik dan gewoon een tre catch doen zoals hieronder.

Java:
1
2
3
4
5
6
7
8
try
{
   //code waar het fout kan gaan
}
catch(NullPointerException e)
{
   //voer code uit
}
Het gooien van Excepties kan duur zijn (ik weet niet hoe het in Java zit, maar in .NET is het alleszins zo).
Wat ik zou doen, is testen of die variable null is voor je ze gebruikt. (Tenzij je zeker weet dat -in normale omstandigheden- die volledige array moet gevuld zijn met geldige objecten. Dan kan je idd voor een dergelijke constructie kiezen.

https://fgheysels.github.io/


Acties:
  • 0 Henk 'm!

  • jvaneijk
  • Registratie: Mei 2003
  • Laatst online: 29-05 12:10
bigbeng schreef op woensdag 08 december 2004 @ 11:54:
Dat zou kunnen, maar los je daarmee het probleem op, of verhelp je alleen het symptoom? Blijft de knop je vraagnummer nog wel ophogen en is dat de bedoeling?

Het lijkt mij dat je ervoor kunt zorgen dat de Exceptie uberhaupt niet optreedt en dat zou dan toch de voorkeur hebben, nietwaar?

offtopic:
@whoami: per statement, want anders gaan die elcheapos hier al hun code op 1 regel proppen :)
Op zich maakt het niet echt uit voor de rest doe ik er niets mee en als de fout dan optreed dan zou ik tock klaar zijn met de volgende knop en daar iets anders mee doen en verwijderen van mijn Applet

iRacing Profiel


Acties:
  • 0 Henk 'm!

  • jvaneijk
  • Registratie: Mei 2003
  • Laatst online: 29-05 12:10
Oke jongens bedankt voor alle informatie hierover nu kom ik er wel uit tnx

iRacing Profiel

Pagina: 1