# Midlet bei Fehler elegant beenden mit Fehlermeldung



## ajva (25. Mrz 2008)

Hallo.

Ich habe mein erstes Midlet geschrieben. Es ist ein Programm, das eine CSV-Datei aus dem Dateisystem meines Sony Ericsson Telefons einliest, mit Daten aus einem Form (mit TextFields, ChoiceGroups, etc.) ergänzt und eine neue Version der Datei schreibt. Das Sony Ericsson Telefon fragt bei jeder Schreiben/Lesen-Aktion (FileConnector) nach Schreib- und Leseerlaubnis. Wird der Zugriff durch den Benutzer verweigert, kann ich ein Alert ausgeben, soweit so gut. Aber da die weitere Ausführung des Programms keinen Sinn mehr macht, möchte ich das sich das Programm beendet. Nun möchte ich aber, dass das Programm mit einer deutlich sichtbaren Fehlermeldung (Alert) auf das Problem hinweist und sich danach beendet. Leider bekomme ich das nicht hin.

Heir ist die Dateilesen-Methode, die zu beginn des Progs als eigener Thread aufgerufen wird:

```
String readFromFile(){

		try{

			FileConnection fconn = (FileConnection)Connector.open(URL, Connector.READ_WRITE, true);

			if (!fconn.exists()){
					out("die Datei existiert nicht: erzeuge...");
					//da keine Datei existiert, erzeuge eine
					fconn.create();
					OutputStreamWriter fosw = new OutputStreamWriter(fconn.openOutputStream());
					//Schreibe die Kopfzeile in die neue Datei
					fosw.write(head, 0, head.length());
					fosw.close();
			}
			InputStream fis = fconn.openInputStream();
			byte[] b = new byte[8192];
			int length = fis.read(b, 0, 8192);
			if (length == 8192) throw new Exception("max. Dateilänge erreicht!");
			fis.close();
			String oldData = new String(b, 0, length);
			fconn.close();
			if (oldData.length() > head.length()) fileHasData = true; 
			return oldData;
		}

		catch(Exception e){
			showError(e.getMessage());
	 		return "FAIL";
	 	}

	 }//readFromFile()
```

Mein Versuch war, folgendes im catch-Block zu platzieren (nach der showError()-Sache, die ein Alert zeigt)

```
destroyApp(false);

notifyDestroyed();
```
Leider stirbt das Midlet dann umgehend, die Meldung ist nicht zu sehen.


Wäre schön, wenn jemand helfen könnte. Danke schonmal fürs lesen.


----------



## MiDniGG (25. Mrz 2008)

Hey,

also was mir so spontan einfällt ist:

1.) Nen Thread basteln, der die Meldung anzeigt und dann nach x sekunden erst das notifyDestroyed(); ausführt

2.) Du machst irgendwas zum Bestätigen hin, und wenn der User drückt eben das notify... ausführen.


----------



## Guest (26. Mrz 2008)

Danke MiDniGG für Deine Tipps. Ich habe es jetzt so gemacht, dass mein Form nur noch einen Hinweis zeigt und nur noch das Command "Exit" bietet. Irgendwie hatte die diese Möglichkeit übersehen...


----------



## ajva (26. Mrz 2008)

Oops. Ein Forum, in dem man ohne Anmeldung mitreden kann? Wo gibt es denn sowas? Der Beitrag stammt natürlich von mir....


----------



## MiDniGG (26. Mrz 2008)

Blödes invalide session. Versuch Nummer 4:

Aja gut. Bitte für die Tipps.

Jaja. Sowas gibts nur hier ;-)


----------

