Jetzt kostenlos registrieren. Mitglieder surfen ohne Werbung auf Android-Hilfe.de!
Zurück   Android-Hilfe.de > Android Developer > Android App Entwicklung

IOExection Ereignis abfragen

Das Thema "IOExection Ereignis abfragen" befindet sich unter Android App Entwicklung auf Android-Hilfe.de.


Antwort

 

Themen-Optionen Ansicht
Alt 09.12.2011, 10:03   #1 (permalink)
Android-Hilfe.de Mitglied
 
Benutzerbild von snowman2

Registriert seit: 07.12.2011
Beiträge: 128
Abgegebene Danke: 15
Erhielt 14 Danke für 14 Beiträge
Standard IOExection Ereignis abfragen

Hallo,

ich möchte auf eine Exception, je nach Auslöser, unterschiedlich reagieren. Wie kann ich das bewerkstelligen?

Code:
try{
}catch(IOException e){
  Log.e("Test",e.toString); // So kann ich den Text des Auslösers ausgeben
  // ich möchte aber so etwas in der Art
  switch (e.code){
    cast e.CONNECTION_REFUSED:
       ....
       break;
  }
}
Ich weiß das der Code so nicht funktioniert aber wie stelle ich es an das es mit dem "switch" funktioniert?

ciao
Martin
snowman2 ist offline   Mit Zitat antworten
Alt 09.12.2011, 10:05   #2 (permalink)
Fortgeschrittenes Mitglied

Modell: HTC Desire HD

Registriert seit: 09.08.2010
Beiträge: 345
Abgegebene Danke: 11
Erhielt 40 Danke für 38 Beiträge
Standard AW: IOExection Ereignis abfragen

Meinst du sowas:

PHP-Code:
...
} catch (
Exception e) {
    if(
instanceof IOException) {
        
// do smth
    
}

?
Unicate ist offline   Mit Zitat antworten
Alt 11.12.2011, 10:53   #3 (permalink)
Android-Hilfe.de Mitglied
 
Benutzerbild von snowman2

Registriert seit: 07.12.2011
Beiträge: 128
Abgegebene Danke: 15
Erhielt 14 Danke für 14 Beiträge
Standard AW: IOExection Ereignis abfragen

Ich bekomme ja auf jeden Fall eine IOException. Ich möchte aber auf die verschiedenen IOExceptions unterschiedlich reagieren.
Ein Möglichkeit währe den String zu vergleichen:

Code:
if (e.toString == "Fehler Text") {
}
aber evtl. gibt es eine Möglichkeit mit switch.
snowman2 ist offline   Mit Zitat antworten
Alt 11.12.2011, 15:53   #4 (permalink)
Android-Hilfe.de Mitglied

Modell: Acer Iconia A100

Registriert seit: 28.10.2011
Beiträge: 127
Abgegebene Danke: 15
Erhielt 13 Danke für 11 Beiträge
Standard AW: IOExection Ereignis abfragen

Verschiedene IOExcepction Unterklassen?
wenn Du das meinst, dann "catched" du zuerst die spezifischeren bis hoch zur allgemeinen IOException.

catch(MyIOException1 e){
// do something
}
catch(MyIOException2 e){
// do something
}
catch(IOException e){
// do something
}
__________________
Samsung Galaxy S mit Android 4.03 RC4 ICSSGS
Acer Iconia A100 mit Android 3.2
Vodafone 858 smart mit Android 2.2.1

Geändert von mradlmaier (11.12.2011 um 15:56 Uhr)
mradlmaier ist offline   Mit Zitat antworten
Alt 11.12.2011, 18:04   #5 (permalink)
Android-Hilfe.de Mitglied
 
Benutzerbild von snowman2

Registriert seit: 07.12.2011
Beiträge: 128
Abgegebene Danke: 15
Erhielt 14 Danke für 14 Beiträge
Standard AW: IOExection Ereignis abfragen

Das muss ich mir mal anschauen, evtl. ist es das was ich suche.
snowman2 ist offline   Mit Zitat antworten
Alt 11.12.2011, 19:46   #6 (permalink)
Android-Hilfe.de Mitglied

Modell: Acer Iconia A100

Registriert seit: 28.10.2011
Beiträge: 127
Abgegebene Danke: 15
Erhielt 13 Danke für 11 Beiträge
Standard AW: IOExection Ereignis abfragen

Hängt natürlich davon ab, ob die Methode die im try-Block steht, entsprechende Subklassen von IOException "throwed"

Wenn das dein eigener Code ist kannst Du deine eigenen Exceptions definieren, throwen, und catchen.... wenn nicht, hast Du Pech gehabt.

Jedenfalls ist es Beste Praxis, für verschiedene Ausnahmen entsprechende Klassen zu definieren, statt Fehlertexte abzufragen.

Guck Dir mal Exception Handling in Java an - das ist eines der eleganteren Features von Java, es lohnt sich.
__________________
Samsung Galaxy S mit Android 4.03 RC4 ICSSGS
Acer Iconia A100 mit Android 3.2
Vodafone 858 smart mit Android 2.2.1
mradlmaier ist offline   Mit Zitat antworten
Alt 12.12.2011, 08:44   #7 (permalink)
Android-Hilfe.de Mitglied
 
Benutzerbild von snowman2

Registriert seit: 07.12.2011
Beiträge: 128
Abgegebene Danke: 15
Erhielt 14 Danke für 14 Beiträge
Standard AW: IOExection Ereignis abfragen

Ja werde ich machen Danke erstmal.

Ich baue eine Verbindung per Bluetooth auf und wenn dabei etwas schief geht bekomme ich die Exception. Und je nachdem was schief geht möchte ich unterschiedlich reagieren.
snowman2 ist offline   Mit Zitat antworten
Alt 16.12.2011, 20:15   #8 (permalink)
Android-Hilfe.de Mitglied
 
Benutzerbild von snowman2

Registriert seit: 07.12.2011
Beiträge: 128
Abgegebene Danke: 15
Erhielt 14 Danke für 14 Beiträge
Standard AW: IOExection Ereignis abfragen

Zitat:
Zitat von mradlmaier Beitrag anzeigen
Jedenfalls ist es Beste Praxis, für verschiedene Ausnahmen entsprechende Klassen zu definieren, statt Fehlertexte abzufragen.
Ja genau, das ist ja mein Ziel nicht die Texte abzufragen. Dann wird es ja auch nichts mit dem "switch-case".
Ich habe mir jetzt mal die Exception behandlung näher angeschaut aber nicht das gefunden was ich haben möchte. Die Unterklassen abzufangen währe schon gut aber wenn ich nichts übersehen habe gibt es für meinen Fall keine Unterklasse.
Wie gesagt es geht bei mir um Bluetooth ich rufe die Methode "connect()" von "BluetoothSocket" auf. Ich bekomme dann die IOException "java.io.IOException: Service discovery failed". Habe ich die Unterklasse dafür wirklich übersehen?
Was haltet ihr davon den Hash des Exceptionstrings zu verwenden?
Code:
try{
    clientSocket.connect();
}catch (IOException e){
    if (e.getMessage().hashCode() == "Service discovery failed".hashCode()){
        // do what ever
    }
}
Ein Problem ist es natürlich, wenn vom Betriebssystem her der String auch nur in einem Bit geändert wird.

Geändert von snowman2 (16.12.2011 um 20:20 Uhr)
snowman2 ist offline   Mit Zitat antworten
Alt 16.12.2011, 22:53   #9 (permalink)
Android-Hilfe.de Mitglied

Modell: Acer Iconia A100

Registriert seit: 28.10.2011
Beiträge: 127
Abgegebene Danke: 15
Erhielt 13 Danke für 11 Beiträge
Standard AW: IOExection Ereignis abfragen

Zitat:
Zitat von snowman2 Beitrag anzeigen
Ja genau, das ist ja mein Ziel nicht die Texte abzufragen. Dann wird es ja auch nichts mit dem "switch-case".
Ich habe mir jetzt mal die Exception behandlung näher angeschaut aber nicht das gefunden was ich haben möchte. Die Unterklassen abzufangen währe schon gut aber wenn ich nichts übersehen habe gibt es für meinen Fall keine Unterklasse.
Wie gesagt es geht bei mir um Bluetooth ich rufe die Methode "connect()" von "BluetoothSocket" auf. Ich bekomme dann die IOException "java.io.IOException: Service discovery failed". Habe ich die Unterklasse dafür wirklich übersehen?
Was haltet ihr davon den Hash des Exceptionstrings zu verwenden?
Code:
try{
    clientSocket.connect();
}catch (IOException e){
    if (e.getMessage().hashCode() == "Service discovery failed".hashCode()){
        // do what ever
    }
}
Ein Problem ist es natürlich, wenn vom Betriebssystem her der String auch nur in einem Bit geändert wird.
Dafür ist der hashcode nicht gedacht und das wird vorraussichtlich nicht konsistent funktionieren.
Equals and Hash Code in Java

Bin überrascht das es da keine spezielle Exception gibt.
Bleibt die Möglichkeit das Du eine eigene Exception-Unterklasse dafürschreibst.
__________________
Samsung Galaxy S mit Android 4.03 RC4 ICSSGS
Acer Iconia A100 mit Android 3.2
Vodafone 858 smart mit Android 2.2.1
mradlmaier ist offline   Mit Zitat antworten
Alt 16.12.2011, 23:20   #10 (permalink)
Android-Hilfe.de Mitglied
 
Benutzerbild von snowman2

Registriert seit: 07.12.2011
Beiträge: 128
Abgegebene Danke: 15
Erhielt 14 Danke für 14 Beiträge
Standard AW: IOExection Ereignis abfragen

Zitat:
Zitat von mradlmaier Beitrag anzeigen
Dafür ist der hashcode nicht gedacht und das wird vorraussichtlich nicht konsistent funktionieren.
Ja, das denke ich mir schon, das der Hashcode dafür nicht gedacht ist aber was soll ich machen?

Zitat:
Zitat von mradlmaier Beitrag anzeigen
Bleibt die Möglichkeit das Du eine eigene Exception-Unterklasse dafürschreibst.
Das Problem ist aber, der Bluetooth-Stack kommt nicht von mir. Wie soll ich dann eine eigene Unterklasse schreiben?

Ich habe jetzt mal probiert ein paar von den Unterklassen zu catchen aber es wird keine von diesen ausgelöst, sondern nur die IOException. IOException ist wohl eher für Dateioperationen und Web-Operationen ausgelegt.

Geändert von snowman2 (16.12.2011 um 23:28 Uhr)
snowman2 ist offline   Mit Zitat antworten
Antwort

Stichworte
-

Themen-Optionen
Ansicht


Ähnliche Themen

Thema Autor Forum Antworten Letzter Beitrag
Ereignis Kalenderwoche aus dem Kalender ausblenden minimaltrackhunter Sony Ericsson Xperia Arc Forum 1 20.10.2011 15:11
CountDownTimer im onTick()-Ereignis beenden Fonsi Android App Entwicklung 2 29.09.2011 17:46
Kalenderfunktion Ganztägiges Ereignis / Bug? Sidde HTC Legend Forum 2 10.08.2011 21:37
Auswahl für Wiederkehrendes Ereignis (fehlt) Tigerwuff Samsung Galaxy S (I9000) Forum 9 07.03.2011 07:24
Ereignis-Symbol charlynn HTC Desire Forum 6 14.12.2010 14:00




Du liest gerade: "IOExection Ereignis abfragen" unter "Android App Entwicklung" auf Android-Hilfe.de.


Powered by vBulletin®
Copyright ©2000 - 2012, vBulletin Solutions, Inc.
Search Engine Friendly URLs by vBSEO
© Android-Hilfe.de 2012 - All rights reserved.