Exception eines Frameworks catchen

oldshoe

Bekanntes Mitglied
Hallo ich nutze ein altes Framework, dass hin und wieder Exception und auch Errors verursacht.
Bisher konnte ich alles catchen mit dem folgenden Code. Doch nun gab es wieder eine java.util.zip.DataFormatException: invalid block type durch eine Funktion im Framework. Diese wurde allerdings nicht von mir gefangen sondern einfach auf der Console ausgegeben. Kann ich die auch irgendwie fangen oder wurde vermutlich im Framework schon eine catch-Anweisung mit printStackTrace() verwendet?

Java:
try {
                    final String textContent = extractTextContent(testFile);
                    final Header header = extractHeader(testFile);
                   
                    
                } catch (Exception exception) {
                    LOGGER.error("Analyzing Content failed!" + exception.getMessage());
                } catch (Error error) {
                    LOGGER.error("Analyzing SWFContent failed!" + error.getMessage());
                }
 
Is dass Programm nach der Exception weitergelaufen, dann ist die Exception irgendwo gefangen worden.
wenn das Program danach "abgestürzt" ist wurde sie nicht gefangen.
 
Ja es läuft leider weiter...es scheint in einer Schleife zu hängen und liefert nur noch diese Exception.
Vielleicht kann man nach einer gewissen Laufzeit einfach abbrechen lassen?
 
> es läuft leider weiter

> es scheint in einer Schleife zu hängen

> und liefert nur noch diese Exception

sind anscheinend drei Dinge, die nichts mit dem geposteten Code zu tun haben und allgemein in jedem Programm auftreten,
was ist dazu deine Frage?
natürlich kann man in beliebigen Programmen beliebiges korrigieren, Schleifen entfernen, weitere try/catch einbauen usw.,
was ist dazu deine Frage?

> Vielleicht kann man nach einer gewissen Laufzeit einfach abbrechen lassen?

von außen eher nicht, innen drin kann man wiederum alles machen,
ich baue in manche meiner Schleifen, deren Abbruch von komplexen anderen Methoden abhängen,
zur Sicherheit eine Zählvariable ein und nach maximal 100 Durchläufen ist Schluss 😉
 
> es läuft leider weiter

> es scheint in einer Schleife zu hängen

> und liefert nur noch diese Exception

>sind anscheinend drei Dinge, die nichts mit dem geposteten Code zu tun haben und allgemein in jedem Programm auftreten,
>was ist dazu deine Frage?

Diese 3 Dingen finden innerhalb des Frameworks statt. Genauer während der Header-Extraktion. Meine Frage ist ganz einfach wie ich solche Fälle unterbinden/behandeln kann, es passiert ja nicht immer.

>natürlich kann man in beliebigen Programmen beliebiges korrigieren, Schleifen entfernen, weitere try/catch einbauen usw.,
>was ist dazu deine Frage?
ja natürlich...aber wie verhält es sich wenn dies in einem Framework, das lediglich als .jar vorliegt gemacht werden soll?
 
im Framework selber kannst du nichts machen, nur außen ein try/catch drum bauen, wenn es dir um das Abfangen der Exception geht,
womit wir wieder beim ersten Code wären,

'es läuft weiter' heißt also nicht, dass das Programm nach den von dir geposteten Code-Zeilen weiter läuft, wie AmunRa es meinte,
sondern dass es innerhalb des extractHeader()-Codes weiterläuft, dort vielleicht schon die Exception gefangen und ausgegeben wird ohne dass du eingreifen kannst?

dagegen kannst du ohne Quellcode-Modifikation nahezu nichts machen, genausowenig wie du den Speichervorgang eines Office-Programms beeinflussen kannst,

ein extremer Trick wäre hier in Java noch, die allgemeine API zu verändern, die das Framework nutzt,
java.util.zip.DataFormatException ist ja sicher eine allgemeine Klasse, die könntest du überschreiben und im Konstruktor eine viel schlimmere Exception werfen,
dann wäre das Framework ausgetrickst, falls es nicht gerade ein umfassendes try/catch verwendet,
aber auch nur bei dir mit einer neu kompilierten Java-API..
 

Zurück
Oben