[JAVA] Vreemde exception error

Pagina: 1
Acties:

  • Blubber
  • Registratie: Mei 2000
  • Niet online
Ik krijg bij het compilen van de volgende code
code:
1
2
3
4
5
6
7
8
9
10
11
public void open() {
        try {
            final Connection conn = new Connection();
            
        } catch (ConnectionException ex) {
            ErrorCode err = ex.getErrorCode();
            if (err != null)
                System.err.println("Got error: "+err);
            ex.printStackTrace();           
        }
    }

deze foutmelding van java
code:
1
2
3
4
5
6
[blubber@Athene code]$ javac *.java
MsnConnection.java:24: exception org.gimec.msnj.ConnectionException is never thrown in body of corresponding try statement
        } catch (ConnectionException ex) {
            ^
1 error
[blubber@Athene code]$

Weet iemand wat dat inhoud?

Verwijderd

je moet die exception eerst thrown denk ik :?
hoe kun je nou een catchen als ie niet eerst gegooid wordt? :+

  • Blubber
  • Registratie: Mei 2000
  • Niet online
Op zaterdag 16 maart 2002 19:57 schreef woeitje het volgende:
je moet die exception eerst thrown denk ik :?
hoe kun je nou een catchen als ie niet eerst gegooid wordt? :+
Hoe bedoel je? De constructor van Connection kan Exceptions throwen...

  • thijsc
  • Registratie: Augustus 2000
  • Laatst online: 22-12-2023
ConnectionException wordt blijkbaar niet gethrowed door de code die in de try staat.

Dit lijkt me ook logisch. Het aanmaken van het connectieobject zal niet mis kunnen gaan.

Gooit ie deze exception niet als je een connectie probeert te openen met dit object?

  • marcusk
  • Registratie: Februari 2001
  • Laatst online: 26-09-2023
Op zaterdag 16 maart 2002 20:04 schreef Blubber het volgende:
Hoe bedoel je? De constructor van Connection kan Exceptions throwen...
dan moet je dus ook een Exception catchen, niet een ConnectionException.
Op zaterdag 16 maart 2002 21:05 schreef thijsc het volgende:
Dit lijkt me ook logisch. Het aanmaken van het connectieobject zal niet mis kunnen gaan.
Kijk eens naar de constructor van bv. Socket, die gooit ook een exceptie (IOException).

Verwijderd

Als je in de API kijkt zie je bij de Connection klas de volgende constructor staan.

public Connection()

De constructor van Connection gooit dus geen ConnectionException.

De meeste andere methods van die class gooien die exception wel.

  • The - DDD
  • Registratie: Januari 2000
  • Laatst online: 03-09 16:40
Wat blaat iedereen nou dan?

't Lijkt me vrij duidelijk dat er op basis van het code voorbeeld geen enkele redenering is te geven voor het niet werken van deze code. Wat is dat Connection geval voor ding? Welke package?

Daarnaast vind ik de final declaratie van conn een nogal twijfelachtige kwestie.

Laat de topic starter eerst maar is duidelijk maken wat nou precies zijn probleem is. Tot die tijd is er geen zinnig antwoord te geven.

  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024

Alarmnummer

-= Tja =-

Je moet even beter lezen, er staat in blubber zijn 1e melding dat het om de gimec.msnj.ConnectionException gaat (zie foutmelding) en dan is het vrij voor de hand liggend dat de Connection ook in die package zit. En de oorzaak lijkt me vrij duidelijk: je probeerd een exception to catchen die niet gethrowed wordt).

dus ThijsC en Sosume hadden gelijk.

Verwijderd

IIRC is bestaat een try blok uit :
try {}
catch(exception e) {}
en dan een final
Echter die zet je in je try waardoor er geen exceptie gegooid kan worden.
Ik kan het mis hebben, maar wat doet dan die aanduiding final in je try blok?

  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024

Alarmnummer

-= Tja =-

aaaaaaaarrrgggggghhhh......

er is maar 1 antwoord op zijn vraag:

de melding:"ConnectionException is never thrown in body of corresponding try statement" betekent dat je probeerd een exception af te vangen die niet wordt gegooid. That`s all!!!!

en dat heeft verder niets met die (misplaatste) final te maken.

Verwijderd

Op maandag 18 maart 2002 13:31 schreef Alarmnummer het volgende:
aaaaaaaarrrgggggghhhh......

er is maar 1 antwoord op zijn vraag:

de melding:"ConnectionException is never thrown in body of corresponding try statement" betekent dat je probeerd een exception af te vangen die niet wordt gegooid. That`s all!!!!
Duidelijkere foutmeldingen zijn er haast niet :)

  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024

Alarmnummer

-= Tja =-

ik vind een 'out of memory exception' altijd wel leuk ;)

  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
The - DDD: 't Lijkt me vrij duidelijk dat er op basis van het code voorbeeld geen enkele redenering is te geven voor het niet werken van deze code.
Mwah, in combinatie met de foutmelding en wat kennis van de de Java compiler kom je een heel eind: bij het aanmaken van een Connection instantie wordt de opgevangen ConnectionException kennelijk helemaal niet gegooid.

De geachte topic-starter moet gewoon even zijn API documentatie raadplegen om te kijken wat voor exceptions er dan wel gegooid worden (wellicht wel geen een).
Daarnaast vind ik de final declaratie van conn een nogal twijfelachtige kwestie.
Waarom? Ik zou niet weten wat er mis mee is om een lokale variabele final te verklaren als hij nooit een andere waarde zal (mogen) krijgen. Dat dit geen dagelijkste praktijk is, is een andere zaak ;) .
otaku-san: IIRC is bestaat een try blok uit :
try {}
catch(exception e) {}
en dan een final
finally
Ik kan het mis hebben, maar wat doet dan die aanduiding final in je try blok?
Dat is gewoon het aanduiden van het final zijn van een lokale variabele... niets mis mee. Zelf maak ik methode parameters altijd final als ik in een puristische bui ben. Lokale variabelen kan je net zo goed als instantie of klasse variabelen gewoon final maken.

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment


  • Stephan Oudmaijer
  • Registratie: Oktober 2000
  • Laatst online: 16-08-2023
De melding is simpel... Er staat namelijk dat de methode die in de try staat NOOIT de betreffende exception throwed! Dit houdt dus in dat het geen zin heeft om er een catch aan te hangen die een exception 'catched' die nooit gethrowed wordt...

Dit is dus redundantie. Catch gewoon de algemene Exception, of haal de try->catch statement weg.

  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024

Alarmnummer

-= Tja =-

Op maandag 18 maart 2002 16:02 schreef CK het volgende:
De melding is simpel... Er staat namelijk dat de methode die in de try staat NOOIT de betreffende exception throwed! Dit houdt dus in dat het geen zin heeft om er een catch aan te hangen die een exception 'catched' die nooit gethrowed wordt...
Mee eens :) Maar volgens mij is dat hier ook al tig keer gezegd.
Dit is dus redundantie.
:? Mag jij mij uitleggen waar de redudantie in zit.
Catch gewoon de algemene Exception
slecht advies.. want er wordt tenslotten GEEN exception opgeworpen en dan ga je ook niet een vangen.
of haal de try->catch statement weg.
goed advies...

en volgens mij kan er aan dit topic niets meer worden toegevoegd dan een lading onzin... hij heeft antwoord op zijn vraag.

  • CyBoB
  • Registratie: Januari 2001
  • Laatst online: 24-12-2025

CyBoB

.::BURB::.

Op maandag 18 maart 2002 13:37 schreef Alarmnummer het volgende:
ik vind een 'out of memory exception' altijd wel leuk ;)
[off-topic]
Dit had een collega van mijn laatst ook, betekend dit nou echt dat je "out of memory" bent? of is het gewoon een beetje vaag geformuleerde foutmelding.

Ik kan me namelijk voor stellen als je geheugen aan de critieke kan begint te raken, dat windows gewoon begint te swappen ?

of heb ik het nou verkeerd :?
[/off-topic]

  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024

Alarmnummer

-= Tja =-

die krijg je meestal naar dit soort acties:
code:
1
2
3
public void doIets(){
   doIets();
}

je stack begint nu binnen de korste keren op te raken, en dan krijg je dus een out of memory error :) Een vergeten super is meestal de oorzaak ervan :z

Maar je vm kan zeker wel zonder geheugen raken. Als je namelijk niet instelt hoeveel geheugen hij mag gebruiken dan is zijn default max size 64mb. En als je daarover komt dan knal je eruit met deze charmante foutmelding :)
Pagina: 1