| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Java: Общие вопросы > имя файла в java.io.FileNotFoundException |
| Автор: saneea 14.9.2011, 11:23 |
| Если какие-либо стандартные средства Java не могут открыть файл, то летит java.io.FileNotFoundException. Это исключение предоставляет "монолитную" строку с именем файла и причиной типо того: "F5010.dat (The system cannot find the file specified)". Мне же нужно имя проблемного файла и причину в двух разных строках, неужели для этого придется парсить эту "монолитную" строку? Спасибо! p.s.: для сравнения, в .Net есть аналогичный System.IO.FileNotFoundException, но он предоставляет свойство FileName. |
| Автор: Skipy 14.9.2011, 13:14 |
| Передавайте стандартным средствам объект типа java.io.File, они его, как правило, принимают наравне со строкой. Из такого объекта можно всё получить. |
| Автор: saneea 14.9.2011, 13:29 | ||
Возможно я плохо объяснил, возможно я плохо понял ответ, потому что не понимаю как java.io.File может мне помочь. Я хочу чтобы было примерно так:
Т.е. по сути имеем только объект типа java.io.FileNotFoundException и больше ничего. |
| Автор: COVD 14.9.2011, 14:26 | ||
|
| Автор: saneea 14.9.2011, 17:03 | ||||
К сожалению так тоже меня не устроит, потому что "//какой-то код работающий с файлом(и)" - это код, который вызывает функцию, которая может ещё вызвать кого-то и т.д., т.е. ловить исключение мне нужно в одном месте, а кинуться оно может во многих местах, соответственно имя проблемного файла в try{} мы знать не можем. |
| Автор: COVD 14.9.2011, 19:30 | ||
Наверное, логично FileNotFoundException ловить именно в том месте, где имя файла определяется. Тогда такая конструкция вполне приемлема. А в секции catch можно создать и выбросить наверх новое исключение, если требуется все исключения обрабатывать в одном месте. Можно же создать свой класс, типа MyFileNotFoundException, в котором определить все необходимые поля и методы доступа. |
| Автор: Nofate 14.9.2011, 19:31 |
| Т.е. вы хотите вызвать некоторую чужую библиотеку, которая неизвестно что делает с неизвестным вам набором файлов, и в случае экспшена в ней получить название файла? |
| Автор: Farmazon 15.9.2011, 05:59 |
| new File(sFileName).getName() не катит? |
| Автор: saneea 15.9.2011, 08:43 | ||||||||
Ну вот по видимому так и придется делать... хотя это слегка раздует код + нужно не забыть сделать такую "обёртку" во всех местах + не забывать делать такую "обёртку" при появлении таких новых мест.
нет, код свой, но не хотелось его перелопачивать, но по видимому придётся.
Не понимаю как это можно использовать. У меня ведь нет sFileName, если я просто поймал java.io.FileNotFoundException. Всем спасибо! |