ERLEDIGT
JA
JA
ANTWORTEN
5
5
ZUGRIFFE
405
405
EMPFEHLEN
-
Hi @all,
habe mal wieder angefangen mit Java zu programmieren und komme nicht weiter:
Versucht meine App auf das Internet zuzugreifen ohne daß eine Verbindung besteht, kommt eine IO-Exception mit "Unknown Host" - soweit ja klar und auch Verständlich, und ich hab das ganze auch mit try/catch/finally abgearbeitet.
Leider beendet sich meine App unter Android somit - was meine Frage aufwirft:
Kann man Exceptions auch abhandeln ohne daß eine App dabei beendet wird ?
Wie prüft man am besten ab, ob eine Verbindung besteht ?
Bei mir läuft das ganze in einem TimerTask ab, der alle 30 Minuten versucht eine Verbindung aufzubauen.
Danke & LG
Andy
-
Howdie.
Da ich noch nie für Android programmiert habe, erstmal eine Frage:
Läuft das unter J2ME oder der normalen J2SE?
Der Sinn von Exception-Handling ist ja eigentlich der, dass man auf Fehler reagieren kann und nicht gleich die Applikation abschmiert... Daher finde ich es seltsam, was da bei dir passiert. Wird vielleicht ein Error geworfen statt einer Exception? Und was machst du in den catch/finally-Blöcken? Vielleicht wird hier nochmals ein Fehler ausgelöst durch ein close() oder ähnliches.
Wenn ich mit Kommunikations-Protokollen arbeite (egal ob zu Hardware oder ins Netzwerk), prüfe ich die Verdindung manchmal ebenfalls durch zyklisches Polling, so wie du. Hierbei ist allerdings problematisch, dass die Verbindung nicht garantiert noch vorhanden ist, wenn du dann eine Abfrage o.Ä. darüber senden willst.
Daher habe ich für solche Projekte inzwischen meistens eine State-Machine am Laufen. Finde ich persönlich einfacher, Dinge wie Synchronisation zwischen TimerTask, Threads oder sowas fallen weg.
Gruß
miffi"A common mistake that people make when trying to design something completely foolproof is to underestimate the ingenuity of complete fools."
Douglas Adams
-
Hossa,
erstmal Danke für Deine schnelle Antwort.
Ich rufe am Anfang der Funktion eigentlich nur eine Url auf:
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
try { URL u = new URL("http://irgendwas.de"); HttpURLConnection conn = (HttpURLConnection)u.openConnection(); ....... // irgendwann wenn alles verarbeitet ist: conn.close(); } catch(MalformedURLException mue) { mue.printStackTrace(); } catch(IOException ioe) { ioe.printStackTrace(); } finally { // verarbeite daten der URL }
Die App kommt so bis zur IOException und wird danach beendet: "Unknown Host".
Ob das unter Android normal weiß ich leider nicht, auch nicht ob da mit J2SE oder J2ME gearbeitet wird: sieht man das irgendwie/irgendwo ?
PS:
Viellt. kann es ja sein, dass die App wegen dem "conn.close()" abschmiert, weil ja gar keine Verbindung offen ist ?
LG & DankeGeändert von andy72 (11.10.10 um 15:21 Uhr)
-
11.10.10 16:46 #4
Moin,
Das hängt davon ab, wo genau die Exception auftritt .....
Ist eine der beiden Zeilen
dann ist möglicherweise die Adresse falsch !Code java:1 2
URL u = new URL("http://irgendwas.de"); HttpURLConnection conn = (HttpURLConnection)u.openConnection();
Ich validiere sie immer mit folgendem Code:
Code 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 26 27 28 29 30 31 32 33 34 35
boolean validateUrl( URL url ) { boolean bLoadOK = true; HttpURLConnection httpcon = null; int responsecode = -1; if ( (bLoadOK) && (url != null)) { try { String strTheHostIP = InetAddress.getByName(url.getHost()).getHostAddress() ; String strTheHostname = InetAddress.getByName(url.getHost()).getHostName(); int thePort = url.getPort(); String thePath = url.getPath(); URL theURL = null; if (thePort == -1){ theURL = new URL("http://" + strTheHostIP + thePath); } else { theURL = new URL("http://" + strTheHostIP + ":" + thePort + thePath); } httpcon = (HttpURLConnection) theURL.openConnection(); httpcon.setRequestProperty( "Host", strTheHostname); responsecode = httpcon.getResponseCode(); } catch (IOException ex1) { bLoadOK = false; } } if (responsecode != java.net.HttpURLConnection.HTTP_OK) // 200 -> HTTP_OK { bLoadOK = false; } else { bLoadOK = true; } return bLoadOK; }
Andernfalls tritt der Fehler in
aufCode java:1
..........

Dann solltest Du da mal schrittweise mit dem Debugger durchgehen, um die genaue Zeile zu ermitteln !
Gruß
KlausEs ist noch kein Meister vom Himmel gefallen - sonst hätte man schon längst seine Leiche gefunden !!
Falls ich helfen konnte, wäre eine Bewertung oder ein Danke nett ;-)
-------------------------------------------------------------------------------------------------
Ich beantworte keine Fragen per PN !!
Stellt Eure Fragen im Forum - dann haben alle etwas davon !!
-
Howdie.
Klaus hat eigentlich alles bereits ausreichend erläutert.
Das einzige, was ich dir noch empfehlen möchte, ist eine Erweiterung des try-catch-Blocks: Bei so kritischen und vielfältigen Operation, wie es hier der Fall ist, können einige Fehler auftreten. Ich würde immer ans Ende der spezifischen Exception-Catcher einen allgemeinen catch(Exception e)-Block setzen. Dann ist garantiert, dass auch bei nicht geplanten Fehlern nicht gleich die Applikation hängt. Außerdem bringt der Strack-Trace vielleicht auch ein wenig Licht in die Sache.
Die Methode conn.close() schließt eigentlich nur den Stream der Verbindung... Weiß jetzt grad nicht, ob dadurch eine Exception ausgelöst wird, nur ein boolean zurückgegeben wird oder gar nichts passiert.
Gruß
miffiGeändert von miffi (11.10.10 um 19:51 Uhr)
"A common mistake that people make when trying to design something completely foolproof is to underestimate the ingenuity of complete fools."
Douglas Adams
-
Danke Ihr 2 beiden,
hat sich erledigt: Ich hab das URL-Object versehentlich außerhalb eines anderen try/catch (für XML/SAX) instanziert - war nicht ganz so clever von mir
Habe die try/catch Blöcke nun zusammengeführt und nun steigt meine App auch nicht mehr aus bei einem Fehler 
LG & Danke nochmal
Ähnliche Themen
-
Frage zur Exception java.net.MalformedURLException: unknown protocol:
Von RalU im Forum JavaAntworten: 3Letzter Beitrag: 12.08.10, 20:46 -
Frage zu einer Exception
Von Maik20 im Forum JavaAntworten: 1Letzter Beitrag: 15.05.09, 20:49 -
Frage zu Exception
Von Shizzl_chrizzl im Forum JavaAntworten: 1Letzter Beitrag: 21.01.05, 14:56 -
Exception Frage
Von NRFi im Forum .NET ArchivAntworten: 0Letzter Beitrag: 20.01.05, 10:48 -
XP-PC aufgehangen, Machine Check Exception, Frage zu DMP-Dateien.
Von wackelpudding im Forum Microsoft WindowsAntworten: 0Letzter Beitrag: 10.08.03, 11:38





Zitieren

Login





