catch exception funktioniert nicht!

Status
Nicht offen für weitere Antworten.

Bastian

Bekanntes Mitglied
ich stehe gerade auf dem schlauch:

Code:
try{
  URL iconImage = loader.getResource("icon.gif");
  Image image = getToolkit().createImage(iconImage);
  setIconImage(image);
}
  catch(Exception e){
  }

warum funktioniert obige exception nicht? ist icon.gif nicht vorhanden, sollte eigentlich nichts passieren, aber mein jframe bleibt trotzdem hängen und ich bekomme in der konsole folgende fehler:
Code:
Uncaught error fetching image:
java.lang.NullPointerException
        at sun.awt.image.URLImageSource.getConnection(URLImageSource.java:97)
        at sun.awt.image.URLImageSource.getDecoder(URLImageSource.java:106)
        at sun.awt.image.InputStreamImageSource.doFetch(InputStreamImageSource.j
ava:240)
        at sun.awt.image.ImageFetcher.fetchloop(ImageFetcher.java:172)
        at sun.awt.image.ImageFetcher.run(ImageFetcher.java:136)

EDIT: selbst wenn ich ne NullPointerException fange gehts nicht ...
 

swerflash

Aktives Mitglied
Ich bin noch ein Anfänger, deshalb weiss ich nicht ob das stimmt was ich schreibe:


Du hast das zwar abgefangen, aber du musst ihm sagen, was er machen soll, fals diese NullPointerException auftritt.

Also zb



Code:
try{ 
  URL iconImage = loader.getResource("icon.gif"); 
  Image image = getToolkit().createImage(iconImage); 
  setIconImage(image); 
} 
  catch(Exception e)
{ 
    System.out.print("Datei nicht gefunden");
  }
 

Bastian

Bekanntes Mitglied
swerflash hat gesagt.:
Ich bin noch ein Anfänger, deshalb weiss ich nicht ob das stimmt was ich schreibe:


Du hast das zwar abgefangen, aber du musst ihm sagen, was er machen soll, fals diese NullPointerException auftritt.

Also zb



Code:
try{ 
  URL iconImage = loader.getResource("icon.gif"); 
  Image image = getToolkit().createImage(iconImage); 
  setIconImage(image); 
} 
  catch(Exception e)
{ 
    System.out.print("Datei nicht gefunden");
  }

nein, daran liegt es nicht (hätte mich jetzt aber auch stark gewundert, wenn man explizit sagen müsste, was er mit der exception macht...)
 

swerflash

Aktives Mitglied
Ja stimmt, der muss weiter gehen, auch wenn da nichts steht. Dann liegt warhscheinlich der Fehler nicht an dem TRY CATCH block, sondern weiter unten, vieleicht hast du dort ungültige Schleife?
 
R

Roar

Gast
das "datei nicht gefunden" wird doch gar nicht ausgegeben bei dir... oder? also: such mal nach der stelle. der fehler muss woanders fliegen.
 

Bastian

Bekanntes Mitglied
Roar hat gesagt.:
das "datei nicht gefunden" wird doch gar nicht ausgegeben bei dir... oder? also: such mal nach der stelle. der fehler muss woanders fliegen.
nein, der witz is ja, dass ich zum testen das bild umbenannt habe. -> fehle tritt nur auf, wenn datei nicht vorhanden-> fehler muss im try catch block liegen. (außerdem ist das die einzigste stelle im prog, in dem ein image geladen wird)

Was mir außerdem aufgefallen ist:

schlägt das laden eines ImageIcon (also zb ein bild welches ich in ein pane laden will) fehl, funktioniert die try catch anweisung, nur eben nicht beim laden eines images
 

Mag1c

Top Contributor
Hi,

was ist denn "loader" ? Du mußt dein Bild irgendwie anders laden. Jetzt wird es über den ImageFetcher geladen und dieser läuft in einem eigenen Thread und er schreibt auch den Stacktrace aus und das schlimmst ... man kann ihm das nicht abgewöhnen :(

Schonmal mit getResourceAsStream probiert ?

Gruß
Mag1c
 

Bastian

Bekanntes Mitglied
Mag1c hat gesagt.:
Hi,

was ist denn "loader" ? Du mußt dein Bild irgendwie anders laden. Jetzt wird es über den ImageFetcher geladen und dieser läuft in einem eigenen Thread und er schreibt auch den Stacktrace aus und das schlimmst ... man kann ihm das nicht abgewöhnen :(

Schonmal mit getResourceAsStream probiert ?

Gruß
Mag1c

das problem ist, die datei liegt innerhalb eines jar-files. soweit ich weiß kann ich ja ja nur über url und classloader drauf zugreifen.

(loader ist: ClassLoader loader = EditorGui.class.getClassLoader();)

EDIT: wieder was dazugelernt: habe gerade gelesen, dass man mit getResourceAs... auch aus jar-archiven laden kann. ich werde das mal ausprobieren.

EDIT2: hmm, scheint auch nicht hinzuhauen.


Was mir außerdem aufgefallen ist:

schlägt das laden eines ImageIcon (also zb ein bild welches ich in ein pane laden will) fehl, funktioniert die try catch anweisung, nur eben nicht beim laden eines Images. [obwohl ich beider bilder auf die gleiche art und weise lade]
Also, das Funktioniert:
Code:
ClassLoader loader = getClass().getClassLoader();
try{
URL url = loader.getResource("info.gif");
ImageIcon icon = new ImageIcon(url);
lbSymbol.setIcon(icon);
}
catch(NullPointerException e){
}

und das nicht:
Code:
ClassLoader loader = getClass().getClassLoader();
try{
URL iconImage = loader.getResource("icon.gif");
Image image = getToolkit().createImage(iconImage);
setIconImage(image);
}
catch(NullPointerException e){
}

ist schon komisch, hat dazu jemand ne idee?
 
R

Roar

Gast
warum fängst du da eine NullPointerException ab :autsch:
mach das schnell weg. wenn man richtig programmiert fliegen keine nullpointerexceptions.
 

Bleiglanz

Gesperrter Benutzer
-> ImageIcon "lädt" sofort,
Creates an ImageIcon from the specified URL. The image will be preloaded by using MediaTracker to monitor the loaded state of the image. The icon's description is initialized to be a string representation of the URL
aber createImage nicht


"Uncaught error fetching image:" fliegt wahrscheinlich dann im AWT-Thread?
 

Bastian

Bekanntes Mitglied
Roar hat gesagt.:
warum fängst du da eine NullPointerException ab :autsch:
mach das schnell weg. wenn man richtig programmiert fliegen keine nullpointerexceptions.

was heißt hier, wenn man richtig programmiert? wenn der user die datei löscht, gibts halt nunmal ne nullpointerexception.
 
R

Roar

Gast
ich krieg bei deinem code keine exception wenn man eine nicht existiernde datei benutzt. liegt wahrscheilnich am jar. warum löscht der benutzer im jar rum? und wenn die URL null sein kann musss man das vorher abfragen.
 

Bleiglanz

Gesperrter Benutzer
was heißt hier, wenn man richtig programmiert?
wenn du catch(NullPointerException e) in deinem Code hast, dann denkt sich jeder dass du ein Anfänger oder ein "schlechter Programmierer" bist

eine NPE wird grundsätzlich nicht abgefangen!
 

Mag1c

Top Contributor
Hi,

also die Ursache des Problems ist, daß deine URL null ist ... probier das mal aus. Wenn du das prüfst und das anschließende Image(Icon)-Laden nur dann machst, wenn die URL nicht null ist, sollten deine Probleme weg sein.

nun noch was zur Erklärung deiner Symptome:

Warum kannst du einmal die NPE abfangen und das andere mal nicht ?
Ganz einfach, wenn du ein ImageIcon mit einer null-URL erzeugst, kommt dabei schon die NPE und zwar im AWT-Event-Thread. Die kannst du erfolgreich abfangen ... sollst du aber nicht :noe:
Bei der anderen Variante merkt erst der ImageFetcher, daß man an keinem Objekt (null) auch keine Methoden aufrufen kann. Es kommt zu einer NPE, die der ImageFetcher sogar selber auffängt und den StackTrace ausgibt. Du kannst da nix tun, da das ganze noch in einem eigenen Thread läuft.

Code:
class ImageFetcher extends Thread
{
    private void fetchloop()
    {
        for(Thread thread = Thread.currentThread(); isFetcher(thread);)
        {
            ...
            try
            {
                imagefetchable.doFetch();
                continue;
            }
            catch(Exception exception)
            {
                System.err.println("Uncaught error fetching image:");
                exception.printStackTrace();
                stoppingAnimation(thread);
            }
        }

    }

achja, die NPE kommt dann während des doFetch und zwar hier:

Code:
   private synchronized URLConnection getConnection()
        throws IOException
    {
        URLConnection urlconnection;
        if(conn != null)
        {
            urlconnection = conn;
            conn = null;
        } else
        {
            urlconnection = url.openConnection();                                    // << NPE
        }
        return urlconnection;
    }

Gruß
Mag1c
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
H Try Catch Throw Exception Java Basics - Anfänger-Themen 1
I Exception try-catch Java Basics - Anfänger-Themen 1
J Methoden try / catch exception Java Basics - Anfänger-Themen 5
M exception catch falsch? Java Basics - Anfänger-Themen 11
S catch Exception erklären Java Basics - Anfänger-Themen 2
B Exception vor catch Block definieren Java Basics - Anfänger-Themen 9
B try & catch Problem mit Exception bzw String.split() Java Basics - Anfänger-Themen 5
F eigene Exception aus try-catch werfen Java Basics - Anfänger-Themen 10
M Exception->mehrere Exceptions in einem Catch Block behand Java Basics - Anfänger-Themen 4
T catch(InputMismatchException) wird nicht ausgefürt/erkannt Java Basics - Anfänger-Themen 12
missy72 Catch Blöcke zusammenfassen Java Basics - Anfänger-Themen 6
Ostkreuz wie geht der catch? Java Basics - Anfänger-Themen 3
D try/catch-Block bei for-Schleife Java Basics - Anfänger-Themen 14
D Best Practice Ausgabe über direkte Ausgabe oder try-catch? Java Basics - Anfänger-Themen 13
districon Try - Catch Java Basics - Anfänger-Themen 8
JavaNoobi Try and Catch und übergabe von Objekten Java Basics - Anfänger-Themen 2
Y Wie kann ich die Variable in der Try Catch returnen? Java Basics - Anfänger-Themen 3
B Try-Catch Block Java Basics - Anfänger-Themen 3
B JUnit / Exceptions/ try-catch Java Basics - Anfänger-Themen 6
B try catch finally Java Basics - Anfänger-Themen 2
F Mehrere Exceptions in einem Catch-Block abfangen Java Basics - Anfänger-Themen 12
H throws und try catch Java Basics - Anfänger-Themen 8
S Try-Catch in Verwendung einer while Schleife Java Basics - Anfänger-Themen 2
I Try-Catch innerhalb eines Catchblocks Java Basics - Anfänger-Themen 1
J Endlosschleife bei Try-Catch? Java Basics - Anfänger-Themen 3
K JOptionPane/catch/try/finally/if Java Basics - Anfänger-Themen 9
V InputMismatchException (Try and catch) Java Basics - Anfänger-Themen 10
L do-while-Schleife läuft doppelt, try catch fehler Java Basics - Anfänger-Themen 12
J Erste Schritte catch Exeption Parameter Java Basics - Anfänger-Themen 7
TheMenox Try and Catch Java Basics - Anfänger-Themen 12
J Try Catch Java Basics - Anfänger-Themen 6
DeVolt Java8 Paket Time: Datum prüfen / try-catch Java Basics - Anfänger-Themen 1
J Code in Try-Catch Block wird nicht komplett ausgeführt Java Basics - Anfänger-Themen 5
J Frage zum Thema Exceptions (Try/Catch) Java Basics - Anfänger-Themen 3
A Nicht zu findender Fehler in einem try/catch Block Java Basics - Anfänger-Themen 6
F try/catch Ausführungen ? Java Basics - Anfänger-Themen 3
S try-catch - Variablen werden nicht an return übergeben Java Basics - Anfänger-Themen 3
Z Catch & Exceptions Java Basics - Anfänger-Themen 4
E Buchstaben verhindern / Try & Catch Block Java Basics - Anfänger-Themen 3
F try/catch - (else) Java Basics - Anfänger-Themen 11
L Warum ist der catch-Block nicht erreichbar ? Java Basics - Anfänger-Themen 8
C Problem mit try-catch in Schleife Java Basics - Anfänger-Themen 15
R Exceptions (try/catch) Java Basics - Anfänger-Themen 63
H Geht dieser Code noch einfacher (try catch finally) Java Basics - Anfänger-Themen 7
S 'continue' in catch- und if-blöcken Java Basics - Anfänger-Themen 2
B Erste Schritte try-catch-Klauseln, überprüfte Ausnahmen Java Basics - Anfänger-Themen 4
D Erste Schritte Warum try-catch für FileWriter Java Basics - Anfänger-Themen 5
S try-catch-finally-Problem Java Basics - Anfänger-Themen 10
xehpuk Compiler-Fehler final Variable in try-catch Wert zuweisen Java Basics - Anfänger-Themen 8
F Exceptionbehandlung --> catch/throws Java Basics - Anfänger-Themen 11
M Try und Catch Java Basics - Anfänger-Themen 5
B Fehler mit try + catch verhindern Java Basics - Anfänger-Themen 8
N Catch Block in Try erzwingen Java Basics - Anfänger-Themen 14
E Problem mit for schleife/ try-catch block Java Basics - Anfänger-Themen 7
B Variablen Variablen in try / catch "public" machen? Java Basics - Anfänger-Themen 3
C Wiederholung von try-catch Java Basics - Anfänger-Themen 3
N try and catch block in finally Java Basics - Anfänger-Themen 8
C Variable in try/catch Java Basics - Anfänger-Themen 10
B Try and Catch Java Basics - Anfänger-Themen 6
StrikeTom Ein paar(2) Fragen zu throws und try + catch Java Basics - Anfänger-Themen 6
J try und catch Java Basics - Anfänger-Themen 7
G Exceptionfreie Anweisungen in try-catch-Blöcke, Java Basics - Anfänger-Themen 6
M Frage zu try ... catch Java Basics - Anfänger-Themen 9
S NumberFormatException , mit Try/Catch? Java Basics - Anfänger-Themen 7
B Try/catch Java Basics - Anfänger-Themen 11
M Try & Catch Java Basics - Anfänger-Themen 7
V Was ist ein Try-Catch Block Java Basics - Anfänger-Themen 4
M Nach catch mit der schleife weitermachen Java Basics - Anfänger-Themen 9
M try-catch, call-by-reference, Streaming und Strings Java Basics - Anfänger-Themen 10
S sauberer Stil von return Wert (try, catch, finally) Java Basics - Anfänger-Themen 9
S try-catch Java Basics - Anfänger-Themen 10
Tandibur Server führt "try-catch" nicht aus Java Basics - Anfänger-Themen 6
H Falsche Eingabe über try-catch abfangen Java Basics - Anfänger-Themen 2
I Frage zu Try - Catch - Finally Java Basics - Anfänger-Themen 10
Daniel_L Verwendung von try und catch bei exceptions Java Basics - Anfänger-Themen 7
GambaJo Wann try.catch nutzen? Java Basics - Anfänger-Themen 11
H try catch Java Basics - Anfänger-Themen 4
I double-Variable außerhalb des Try-Catch-Blocks nicht gültig Java Basics - Anfänger-Themen 2
D Catch wiederholt sich ständig Java Basics - Anfänger-Themen 2
T try-catch-finally Java Basics - Anfänger-Themen 8
G Anwendung von try-catch Java Basics - Anfänger-Themen 10
G try. catch Verwendung Java Basics - Anfänger-Themen 11
M Try-Catch-Problem Java Basics - Anfänger-Themen 4
G habe ein Catch problem Java Basics - Anfänger-Themen 7
C Nach Catch-Klausel Programm weiter laufen lassen Java Basics - Anfänger-Themen 5
C Frage zu try - catch (saubere Lösung?) Java Basics - Anfänger-Themen 3
G Bei catch beenden Java Basics - Anfänger-Themen 7
U catch mit finally Java Basics - Anfänger-Themen 5
C Exceptions, try, catch --> Frage Java Basics - Anfänger-Themen 7
J Try-Catch-Frage Java Basics - Anfänger-Themen 13
D Frage try and catch Java Basics - Anfänger-Themen 7
ven000m try catch - was muss bei catch rein Java Basics - Anfänger-Themen 28
G Datenbank - catch Java Basics - Anfänger-Themen 2
H Konstruktor in Methode fremder Klasse: try-catch-Problem Java Basics - Anfänger-Themen 4
M return und try-catch Java Basics - Anfänger-Themen 6
M Try . catch erzwungen? Java Basics - Anfänger-Themen 11
A Syntaxproblem mit try und catch Java Basics - Anfänger-Themen 3
Silver-Blue fragen zu Swing und catch Exceptions Java Basics - Anfänger-Themen 2
G return fehler bei try catch Java Basics - Anfänger-Themen 8
H try und catch Java Basics - Anfänger-Themen 6

Ähnliche Java Themen

Neue Themen


Oben