Jeśli zadzwonię do jednej z metod File.mkdir()
lub File.mkdirs()
w języku Java i zwróci ona false
, czy istnieje sposób sprawdzenia, dlaczego katalog nie został utworzony?Wykrywanie przyczyny niepowodzenia pliku File.mkdirs()
Odpowiedz
Niezupełnie, nie. Jeśli NIE zostanie wygenerowany SecurityException
, najbardziej prawdopodobną przyczyną jest literówka na ścieżce, co oznacza, że przypadkowo podano ścieżkę nadrzędną do nowych katalogów, która jest w jakiś sposób nieważna.
Pewnie nie masz to zawinięte w try { ... } catch (Exception e)
bloku, gdzie nie zrealizować SecurityException
jest wyrzucane, ponieważ jesteś połowu przodkiem SecurityException
, prawda?
Jeśli masz głębokie przekonanie, że wszystko wygląda dobrze i nadal się nie udaje, przypuszczam, że możesz po prostu umieścić go w pętli, aby powtórzyć, powiedzmy, trzy razy. Jeśli nadal się nie powiedzie iw zależności od aplikacji, możesz wygenerować alert na poziomie interfejsu użytkownika lub zarejestrować błąd w pliku dziennika (zakładając, że możesz do niego pisać).
Przypuszczam, że jest możliwe, że jakiś głębszy problem z I/O uniemożliwia mu działanie, ale poza zwykłym powiadamianiem użytkownika o niepowodzeniu, niewiele można (lub naprawdę trzeba) zrobić na poziomie aplikacji. Jeśli jest coś poważniejszego w błędnym I/O, to jest to bardziej prawdopodobny problem z systemem/sprzętem/systemem operacyjnym, lub czymś kompletnie nieporęcznym, nad którym nie masz kontroli, podobnie jak awaria podsystemu/usługi.
... a jeśli tak się stanie, to jest to zadanie informatyka, a nie aplikacji. Chyba że twoja aplikacja w jakiś sposób powoduje awarię.
Nie, tak nie było. Odkryłem problem (katalog nadrzędny miał niewłaściwego właściciela w jednym węźle klastra), ale wymagało ode mnie przejścia na inne piętro, porozmawiania z administratorem sieci, poproszenia kogoś o udzielenie mi sesji ssh i wreszcie wpisania '. mkdir my/wadliwy/path'. Miałem nadzieję na bardziej praktyczny sposób robienia tego ... – brandizzi
Dobrze, proszę - problem z facetem IT. :) – jefflunt
Haha, na pewno :) ale Java nie była pomocna albo ... – brandizzi
Zawsze zastanawiałem się, dlaczego 'mkdir()' został zaprojektowany tak, jak to zrobił (nie to, że kiedykolwiek był dla mnie problem). – NPE
To samo z 'delete()', po prostu zwraca boolean. Brak wskazania, dlaczego coś nie działa, jeśli nie jest to "SecurityException". –