[Java] Wyjątek od zasobu systemowego

Zastanawiam się, zastanawiam się, ale za cholery nie wiem jak to wyszukać w wielkich śmietnikach zwanych wyszukiwarkami…
Jest sobie obiekt typu Scanner/FileStream/itp. Otwarty, gotowy do działania. Nagle ni stąd, ni z owąd, podczas operacji wczytywania/zapisywania wyrzuca wyjątek IOException. Czy z chwilą wyrzucenia wyjątku zasób został automatycznie zamknięty? Czy jednak trzeba manualnie wywołać metodę close()?

Z chwilą wyrzucenia wyjątku powinien pojawić się komunikat o tym, czy kontynuować działanie aplikacji, czy ją zamknąć. Przynajmniej w VS tak jest. Powiedz, jakiego IDE do tego używasz, to z chęcią odpowiem na Twoje pytanie.

A IOException może wyskakiwać dlatego, że np. jest wywoływane przed np. wpisaniem nazwy pliku, i program będzie próbował zapisać plik bez nazwy. Nie wiem, nie podałeś kodu, więc zgaduję.

A w Visual studio taki komunikat, jak opisałem wcześniej, gdy go nie ma, możesz bez problemu włączyć:

Off topic. Nie słyszałem też o pisaniu javowych aplikacji w VS. Zaznajomisz mnie może z tą techniką?

Może jaśniej wyjaśnię.
Mamy coś takiego

1 byte[] data; //jakieś dane
2 try {
3 FileOutputStream stream = new FileOutputStream(new File(“file.txt”));
4 stream.write(data);
5 stream.close();
6 } catch (Exception e) {
7 //handle
8}

Linijka 4. robi throw IOException. Catch w 6. przechwytuje.

Ten zasób w powyższym kodzie to obiekt typu FileOutputStream.

Nie nadałeś chyba wartości zmiennej data.
Bo masz tam byte[] data; i nie widzę nigdzie, abyś jej nadawał wartość.