Fehler beim Schreiben wenn Datei schreibgeschützt abfangen

Status
Nicht offen für weitere Antworten.
F

Freddi

Gast
Hallo!

Schreibe noch immer an meinem Testat und komme hier einfach nicht weiter:

Unser Prof. möchte das wir alle möglichen Fehler abfangen. Die folgende Methode schreibt Koordinaten in eine Datei, um diese beim erneuten Programmstart wieder aufrufen zu können. Ist die Datei schreibgeschützt und versuche darauf zuzugreifen kommt die Fehlermeldung "An Exception of type 'java.lang.NullPointerException' was not handled.

Ich dachte ich hätte den Fehler mittels catch und try abgefangen :bahnhof:

Hier mal der Code der Methode:

Code:
public static void save()
	{
		
			BufferedWriter out = null;
			try //zum schreiben öffnen
			{
			    out = new BufferedWriter (
				      new OutputStreamWriter (
				      new FileOutputStream( "positionen.dat" ) ) );
			}
			catch(Exception E) //Schreibschutz Fehlermeldung
			{
			    System.out.println( "Schreibschutz auf positionen.dat" );
				
			}
			try
			{
			//Werte in den Array schreiben
			Koord[0] = s.x;
			Koord[1] = s.y;
			Koord[2] = t.x;
			Koord[3] = t.y;
			Koord[4] = r.x;
			Koord[5] = r.y;
			//Und in die Datei schreiben
			for (int i = 0 ; i < 6 ; i++)
			{
				out.write( "" + Koord[i] );
				out.newLine();
			}

      		}
			catch( IOException e ) //Fehlermeldung beim schreiben
			{
			    System.out.println( "Fehler beim Schreiben" );
				
			}
			try 
			{
				out.close(); //schließen
			}
			catch( IOException e ) //Fehlermeldung beim schließen
			{
			    System.out.println( "Fehler beim schließen der Datei" );
			}
				
	
	}
 

Oskar

Aktives Mitglied
Tach

bei einer Null Pointer Exception handelt es sich afaik um einen sog. harten Fehler. Die zeichnen sich dadurch aus, dass sie nicht durch ein catch (Exception) abgefangen werden können, da sie nicht von der Klasse Exception abgeleitet sind.

Außerdem würde ich drauf wetten, dass deine Exception nicht im Try/Catch Block fliegt, sondern erst wenn du das erste mal auf deinen out zugreifen willst, der nicht initialisiert werden konnte (wegen des Schreibschutzes und daher null ist).

Daher Vorgehen:
1.) Anfragen ob die Datei schreibgeschützt ist
Wenn ja return aus der Methode
2.) wenn nicht dann FileWriter aufbauen.

Gruß
Oskar
 
F

Freddi

Gast
Hey. Danke für die schnelle Antwort.

Oh man, mein Kopf qualmt schon ;)

Wie frag ich denn ab ob die Datei schreibgeschützt ist? Bin halt noch ein eXtermer noob...
 
S

SlaterB

Gast
NullPointerException kann genauso abgefangen werden wie andere, ist ja ne Exception wie der Name schon sagt ;)

schlimmeres wäre ein Error, die man aber glaube ich auch alle noch abfangen kann
(kann mich da irren ;) )

---------

wichtig bei so einer Exception:
herausfinden wo sie auftritt,
eine vernünftige Entwiclungsumgebung oder die simple Ausführung von einer Konsole aus
liefert normalerweise die Klasse und die Zeilennummer und nicht sowas nichtsagendes wie
'An Exception of type 'java.lang.NullPointerException' was not handled.'


wenn man so eine Hilfe nicht zur Verfügung hat dann muss man sich eben selber was überlegen,
einfaches Mittel ist immer eine Ausgabe der Form:


Code:
public static void save()
   {
         System.out.println("in Operation save, bisher alles ok");
         BufferedWriter out = null;
         try //zum schreiben öffnen
         {
             out = new BufferedWriter (
                  new OutputStreamWriter (
                  new FileOutputStream( "positionen.dat" ) ) );
             System.out.println("in Zeile x, bisher alles ok");

         }
         catch(Exception E) //Schreibschutz Fehlermeldung
         {
             System.out.println( "Schreibschutz auf positionen.dat" );
            
         }
         System.out.println("in Zeile y, bisher alles ok");
        [..]
nach der letzten ausgegebenen Meldung und vor der nächsten muss dann ja irgendwo der Fehler sein ;)

---------------------

> ich dachte ich hätte den Fehler mittels catch und try abgefangen

oben ja, da fängst du alle Exceptions ab,
aber bei den unteren try/ catch-Blöcken steht doch nur

Code:
catch( IOException e ) //Fehlermeldung beim schreiben

das heißt dass auch nur IOExceptions abgefangen werden,
die NullPointerException ist eine andere ;)

Möglichkeiten:

Code:
try
         {
            [..]
            }
         catch( IOException e ) //Fehlermeldung beim schreiben
         {
             System.out.println( "Fehler beim Schreiben" );
            
         } 
         catch( NullPointerException e ) 
         {
             System.out.println( "NullPointerException" );
            
         }
oder gleich alle Exceptions abfangen,

am besten ist es aber die NullPointerException gar nicht abzufangen so wie du es im Moment machst,
die kann man nämlich durch geschickte Programmierung verhindern (während man auf Schreibfehler weniger Einfluß hat, deshalp ist es ja auch verpflichtend try/ catch IOException einzufügen)



Möglichkeiten wären in diesem Fall die Prüfung auf Schreibschutz wie bereits vorgeschlagen,
als letzter Schritt aber immer auch sowas wie
Code:
if (out == null) {
   System.out.println("Fehler (viellleicht wegen Schreibschutz, Abbruch"); 
   // besser genauer falls man Ursache kennt
   return;
}


-----------

edit:

Schreibschutz:
new File(dateiname);
file.canRead()
file.canWrite()
und ähnliche, z. B. file.exists()
 

Bastian

Bekanntes Mitglied
grml, da seh ich doch nach dem abschicken, dass genau das mein vorposter schon geschrieben hat......

prüfung des schriebschutzes könnte so gehen, probiers mal aus:

Code:
if (!file.canWrite())
.....
 
F

Freddi

Gast
Super! :applaus:

Besten Dank für die Antworten. Jetzt funktioniert es:

Code:
...
try 
			{
			    out = new BufferedWriter (
				      new OutputStreamWriter (
				      new FileOutputStream( "koord.dat" ) ) );
			}
			
			catch(IOException e) //Schreibschutz Fehlermeldung
			{
			    System.out.println( "Schreibschutz auf koord.dat" );
				
			}
			// NullPointerException auffangen! Fehlermeldung ausgeben und Programm beenden
			if (out == null)
			{
				System.out.println("");
				System.out.println("FEHLER! Schreibvorgang wegen Schreibschutz nicht erfolgreich");
				System.out.println("Programm wird beendet");
				return;
			}
						
			try
			{
			
				//Werte in die Datei schreiben
				for (int i = 0 ; i < 6 ; i++)
				{
					out.write( "" + Koord[i] );
					out.newLine();
				}
.
.

Echt n Klasse Forum hier. Selten das man so schnelle und kompetente Hilfe kostenlos ;) bekommt!

Ich wünsche allen einen Guten Rutsch und ein erfolgreiches Jahr 2006
 
B

Beni

Gast
SlaterB hat gesagt.:
NullPointerException kann genauso abgefangen werden wie andere, ist ja ne Exception wie der Name schon sagt ;)

schlimmeres wäre ein Error, die man aber glaube ich auch alle noch abfangen kann
(kann mich da irren ;) )
Nur um das noch zu klären: Sofern der Fehler nicht gleich die gesammte Virtual Machine abschiesst (was zwar passieren kann, aber äusserst selten ist), kann man alles abfangen. Selbst Dinge wie "Zuwenig Speicher", "Stacküberlauf" lassen sich fangen.

Der Unterschied zwischen Fehlern wie "IOException" und RuntimeExceptions wie "NullPointerException" ist: die erste Sorte muss man abfangen (sonst meckert der Compiler), die zweite Sorte darf man abfangen, muss aber nicht.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
T Fehler beim Schreiben in Dateien! Java Basics - Anfänger-Themen 4
R fehler beim incrementellen schreiben in einen vector Java Basics - Anfänger-Themen 11
Juelin jedit Fehler beim starten Java Basics - Anfänger-Themen 2
stormyark Fehler beim überschreiben einer Variable Java Basics - Anfänger-Themen 1
T String Array Fehler beim Index Java Basics - Anfänger-Themen 3
S Fehler beim Programm Java Basics - Anfänger-Themen 2
C Fehler beim erstellen eines Objektes Java Basics - Anfänger-Themen 3
S Kriege Fehler "Exception in thread" beim Benutzen von SubStrings. Java Basics - Anfänger-Themen 2
Nerdinfekt BMI Rechner, fehler beim Zurückgeben des Strings? Java Basics - Anfänger-Themen 2
A Fehler beim Ausführen einer class Datei Java Basics - Anfänger-Themen 6
M Compiler-Fehler Fehler beim Ausführen des Codes Java Basics - Anfänger-Themen 25
C Fehler beim Speichern (Build projekt) Java Basics - Anfänger-Themen 42
Kirby.exe Fehler beim Ausgeben Java Basics - Anfänger-Themen 2
J Fehler beim generieren von 4 Zufallszahlen Zahl doppelt ist eigentlich ausgeschlossen Java Basics - Anfänger-Themen 9
K Fehler beim Programmieren von TicTacToe Java Basics - Anfänger-Themen 12
L Fehler beim laden eines Icons Java Basics - Anfänger-Themen 3
U Best Practice Fehleranalyse, welche Fehler macht Ihr beim Lernen bzw. auch später Java Basics - Anfänger-Themen 12
M GUI - Fehler abfangen beim Dividieren Java Basics - Anfänger-Themen 8
E Fehler beim Debuggen einer jsp-Datei Java Basics - Anfänger-Themen 3
J Fehler beim Runden Java Basics - Anfänger-Themen 3
V Klassen Fehler beim compilieren einer Datei in CamelCase Java Basics - Anfänger-Themen 2
C Erste Schritte Fehler beim *.class Aufruf über cmd.exe Java Basics - Anfänger-Themen 9
S Compiler-Fehler Anfänger sucht Hilfe. Fehler beim Compilieren Java Basics - Anfänger-Themen 6
B Input/Output Fehler beim Übertragen eines ObjectOutputStreams. Java Basics - Anfänger-Themen 0
T Fehler beim ActionListener Java Basics - Anfänger-Themen 2
W Fehler beim verlängern des Arrays Java Basics - Anfänger-Themen 5
S Fehler beim Ausführen Java Basics - Anfänger-Themen 5
S Seriealiserung Fehler beim Landen Java Basics - Anfänger-Themen 1
Matze 12 häufige Fehler beim Programmieren lernen Java Basics - Anfänger-Themen 2
R [Erledigt]Fehler beim löschen von einzelnen Buchstaben aus StringBuilder Java Basics - Anfänger-Themen 1
N Fehler beim importieren vom package Java Basics - Anfänger-Themen 2
I beim auslesen der Properties gibt es ein Fehler Java Basics - Anfänger-Themen 7
A Erste Schritte Nicht zu findender Fehler beim Auslesen eines Buchstabens Java Basics - Anfänger-Themen 4
X Fehler beim Öffnen von Jar Datei: "kein Hauptmanifestattribut" Java Basics - Anfänger-Themen 5
B Erste Schritte Fehler beim starten Java Basics - Anfänger-Themen 12
A Resize-Fehler (nur) beim waagrecht Verkleinern Java Basics - Anfänger-Themen 5
S brauche hilfe beim fehler finden Java Basics - Anfänger-Themen 2
1 Erste Schritte ständige Fehler beim Ausführen von Hello World Java Basics - Anfänger-Themen 6
S fehler beim datum parsen Java Basics - Anfänger-Themen 6
F Genereller Fehler beim Starten des Javaprogramms Java Basics - Anfänger-Themen 3
K taschenrechner - Fehler beim Kürzen eines Bruches finden Java Basics - Anfänger-Themen 20
G Fehler beim Umwandeln eines Strings in int Java Basics - Anfänger-Themen 8
B Object "Method" in TreeSet, Fehler beim Vergleichen/Comparable Java Basics - Anfänger-Themen 9
F HttpURLConnection Fehler beim Quelltext holen Java Basics - Anfänger-Themen 6
S Fehler beim Auslösen des ActionListeners in Verbindung mit einer Queue Java Basics - Anfänger-Themen 5
D Fehler beim Compilen Java Basics - Anfänger-Themen 8
A Fehler beim Umschreiben in Array Java Basics - Anfänger-Themen 6
K Fehler beim Einfügen eines Programm Icons Java Basics - Anfänger-Themen 6
J Compiler-Fehler .jar Datei erstellt aber beim Ausführen Fehler Java Basics - Anfänger-Themen 5
M Fehler beim Übergeben von Daten an JTable Java Basics - Anfänger-Themen 14
T Fehler beim Konvertieren (String --> Float) Java Basics - Anfänger-Themen 5
H TicTacToe Fehler beim Compilieren Java Basics - Anfänger-Themen 7
S mögliche Fehler beim Initialisieren von Variablen Java Basics - Anfänger-Themen 19
N Datentypen Fehler beim Umwandeln in byte Java Basics - Anfänger-Themen 3
StrikeTom Fehler beim Audiodatei abspielen Java Basics - Anfänger-Themen 4
M Fehler beim Ausführen von runable Jar Java Basics - Anfänger-Themen 9
StrikeTom Fehler beim bildanzeigen Java Basics - Anfänger-Themen 10
A jexcelapi fehler beim einrichten Java Basics - Anfänger-Themen 2
M Fehler beim Compilieren Java Basics - Anfänger-Themen 2
S Fehler beim berechnen von MD5 Java Basics - Anfänger-Themen 7
M Fehler beim Compilieren Java Basics - Anfänger-Themen 4
J Fehler beim Ausführen von Programm Java Basics - Anfänger-Themen 3
D Class not found fehler beim ausführen unter konsole : / Java Basics - Anfänger-Themen 2
S Fehler beim Speichern von MP3-Stream Java Basics - Anfänger-Themen 6
R Derby-Datenbank: Fehler beim Zugriff im Embedded Modus Java Basics - Anfänger-Themen 27
G Fehler beim builden javax...... Java Basics - Anfänger-Themen 4
L Fehler beim Aufruf eines Applet Java Basics - Anfänger-Themen 2
hdi Fehler beim Model-Update einer JList (DefaultListModel) Java Basics - Anfänger-Themen 3
C Fehler beim ausgführen von Java App als nicht Admin u. Vista Java Basics - Anfänger-Themen 6
G Fehler beim Ausführen HILFE! Java Basics - Anfänger-Themen 12
H JavaMail: Beim Versenden tritt ein Fehler auf! Java Basics - Anfänger-Themen 4
G Fehler beim ausführen einer JSP Java Basics - Anfänger-Themen 5
K Fehler beim complieren Java Basics - Anfänger-Themen 5
0 Folgender Fehler beim Ausführen eines Java Programms Java Basics - Anfänger-Themen 8
O Linux - Fehler beim kompilieren - HILFE Java Basics - Anfänger-Themen 4
T Fehler beim Compilieren Java Basics - Anfänger-Themen 5
G Fehler beim Aufruf eine Javamethode über JSP Java Basics - Anfänger-Themen 8
G Fehler beim erneuten Öffnen von JInternalFrame Java Basics - Anfänger-Themen 7
R Fehler beim Programm Java Basics - Anfänger-Themen 20
G Fehler beim ausführen. Java Basics - Anfänger-Themen 3
W Fehler beim ausführen der Javadateien Java Basics - Anfänger-Themen 3
C Fehler beim build. nur wo? Java Basics - Anfänger-Themen 2
B Fehler beim einbinden eines Packages Java Basics - Anfänger-Themen 6
J Fehler beim Starten der .class Java Basics - Anfänger-Themen 21
V Fehler beim Kompilieren der Unterklasse Java Basics - Anfänger-Themen 2
G Fehler beim kompilieren Java Basics - Anfänger-Themen 18
E Fehler NullPointer beim Ausführen Java Basics - Anfänger-Themen 4
W Fehler beim Compilen Java Basics - Anfänger-Themen 9
D [JCreator] Einrichten - Fehler beim Kompilieren Java Basics - Anfänger-Themen 14
T Chaosprogrammierer hat einen fehler beim casten? Java Basics - Anfänger-Themen 5
D Fehler beim Aufrufen von Instanzvariablen Java Basics - Anfänger-Themen 5
M Problem beim Aufruf einer Methode: Wo is der Fehler? Java Basics - Anfänger-Themen 12
D Fehler beim kompilieren einer Java-Datei (javac) Java Basics - Anfänger-Themen 6
I Fehler beim Compilen Java Basics - Anfänger-Themen 10
T Fehler beim Laden eines Applets Java Basics - Anfänger-Themen 16
O Programm-Fehler beim einlesen von RGB werten Java Basics - Anfänger-Themen 5
F Fraktal fehler beim kompalieren Java Basics - Anfänger-Themen 5
M Fehler beim ein- und auslesen einer Textdatei Java Basics - Anfänger-Themen 5
L Fehler beim ausführen! Java Basics - Anfänger-Themen 14
C Fehler beim Starten einer *.jar Datei Java Basics - Anfänger-Themen 6

Ähnliche Java Themen

Neue Themen


Oben