Wpis z mikrobloga

#programowanie #java

Cześć,

Mam takiego try catcha:

http://pastebin.com/29m0ULv7

Try catch jest dla metody zapisu zdjecia/obrazka na dysku, i nie wiem czemu try catch nie działa prawidłowo. Gdy np. podepnę pendrive wybiorę ścieżkę zapisu i przed samym zapisaniem wyjmę pendrive to oczekiwałem, że pojawi się komunikat obsługujący ten wyjątek, a niestety wywala błąd w konsoli FileNotFoundException itd. Mógłby mnie ktoś naprowadzić?
  • 9
@pulla: Dokładnie dzieje się to:

W FileImageOutputStreamSpi.createOutputStreamInstance(...) masz FileNotFoundException tutaj:

try {

return new FileImageOutputStream((File)output);

} catch (Exception e) {

e.printStackTrace();

return null;

}

Później na tym zwróconym nullu bedzie wywołana metoda close(), która rzuci NullPointerException

Trochę #!$%@? zaprojektowane, przyznaję :)
@pzak: Faktycznie NullPointer wyskakuje, ale takie rozwiązanie wchodzi w grę:

"catch (IOException | NullPointerException e)" ?

Bo komunikat przy takim czymś wyskakuje, ale dalej na konsoli wywala:

java.io.FileNotFoundException: J:\123.jpg (System nie może odnaleźć określonej ścieżki)
@pulla:

Pewnie, że wchodzi, ale niestety w ten sposób nie ominiesz e.printStackTrace(); który ci w konsoli syf robi.

Brzydki workaround (powinien zadziałać, ale sprawdź to):

System.setErr(Stream do pliku)

Twoje operacje

System.setErr(System.err)