try{BufferedWriter writeLog =newBufferedWriter(newOutputStreamWriter(newFileOutputStream("errorlog.txt")));...}catch(FileNotFoundException ex ){
writeLog.write("File not found.");}
schau dir an, wann wo welche Variable sichtbar ist
Java:
publicclassTest{publicstaticvoidmain(String[] args){System.out.println(x);System.out.println(y);int x =0;System.out.println(x);System.out.println(y);try{int y =0;System.out.println(x);System.out.println(y);}catch(Exception e){System.out.println(x);System.out.println(y);}System.out.println(x);System.out.println(y);}}
BufferedWriter writeLog =null;try{
writeLog =newBufferedWriter(newOutputStreamWriter(newFileOutputStream("errorlog.txt")));...}catch(FileNotFoundException ex ){
writeLog.write("File not found.");}
Variablen gelten immer nur INNERHALB eines Blocks (Block beginnt mit { und endet mit } ).
Außerdem macht das ganze keinen Sinnn was du da machst.
Wenn beim initialisieren von writeLog ein Fehler passiert, willst du diesen über writeLog ausgeben?!
Da wird er dir gleich wieder ne Exception schmeißen...
try{BufferedWriter writeLog =newBufferedWriter(newOutputStreamWriter(newFileOutputStream("errorlog.txt")));...}catch(FileNotFoundException ex ){
writeLog.write("File not found.");}
mal so ins Blaue geschossen könnte ich mir vorstellen, dass durch die auftretende Exception Deine Variable "writeLog" gar nicht erst erzeugt wurde ....
Gibt mal im catch stattdessen den StackTrace aus!
Gruß
Klaus
[EDIT]
oh, zu spät :shock:
Und der Aldimann hat zu dem Recht, was die Gültigkeit angeht ....
Gruß vom Lidlmann :lol:
[/EDIT]
mal so ins Blaue geschossen könnte ich mir vorstellen, dass durch die auftretende Exception Deine Variable "writeLog" gar nicht erst erzeugt wurde ....
Gibt mal im catch stattdessen den StackTrace aus!
eine Art Logger selber zu machen ist reine Zeitverschwendung und man muss sich da mit allerlei Sachen befassen die einem von einer fetigen lib abgenommen wird.
BufferedWriter writeLog =null;try{BufferedWriter writeLog =newBufferedWriter(newOutputStreamWriter(newFileOutputStream("errorlog.txt")));...}catch(FileNotFoundException ex ){
writeLog.write("File not found.");}
nicht. Aber wenn z.B. das [c]new FileOutputStream( "errorlog.txt" )[/c] eine FileNotFoundException wirft würde die Zeile [c]writeLog.write( "File not found." );[/c] eine NullPointerException auslösen.
BufferedWriter writeLog =null;try{BufferedWriter writeLog =newBufferedWriter(newOutputStreamWriter(newFileOutputStream("errorlog.txt")));...}catch(FileNotFoundException ex ){
writeLog.write("File not found.");}
nicht. Aber wenn z.B. das [c]new FileOutputStream( "errorlog.txt" )[/c] eine FileNotFoundException wirft würde die Zeile [c]writeLog.write( "File not found." );[/c] eine NullPointerException auslösen.
Jopp aber das ist auch etwas anderes, selbst wenn kein FileNotFoundException geschmissen wird wirst du einen NullPointerException bekommen. Die innere Variable writeLog shadowed nämlich die äußere. Das heißt sobald du den try/catch verlässt ist diese Instanz weg und es fliegt auch ein NPE.