![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() |
Bordes |
![]() ![]()
Сообщение
#1
|
Новичок Группа: Новичок Сообщений: 4 Регистрация: 19.12.2011 Пользователь №: 3079 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Доброе время суток!
Прошу помощи по решению следующей проблемы: В приложении (под Windows 7) используется recursive_directory_iterator, и когда он (итератор) доходит до каталога с запрещенным доступом, его работа прерывается (по exception). Вопрос в том, как возобновить работу итератора (после exception) и, пропустив проблемный каталог(и), двигаться по каталогам дальше. Доп. сведения: Windows 7 RU, VS 2005, C++ boost 1.46.1 Тестовый пример: Раскрывающийся текст #include "stdafx.h" #include "boost\filesystem.hpp" #include <iostream> using namespace std; using namespace boost; using namespace boost::filesystem3; int _tmain(int argc, _TCHAR* argv[]) { wpath p( L"c:\\" ); // Exception случится, например на "c:\\System Volume Information", // а как пропустить его и продолжить дальше? try { wrecursive_directory_iterator i( p ), end; for(; i != end; i++) { wcout << *i << std::endl; } } catch (const filesystem_error& ex) { wcout << ex.what() << '\n'; } return 0; } |
|
|
![]() |
Bordes |
![]()
Сообщение
#2
|
Новичок Группа: Новичок Сообщений: 4 Регистрация: 19.12.2011 Пользователь №: 3079 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
а если без доступа к содержимому делать инкремент - тоже выбрасывается или шагает ? (буста нету, проверить не могу) выбрасывается ![]() похоже, это бага буста: https://svn.boost.org/trac/boost/ticket/4494 впрочем, там что-то написано про передачу параметра конструктору итератора, но я не углублялась. не факт, что эта фича есть у старого буста. да, похоже, что бага... и что не закрытая ![]() причем, вроде как такое исключение выбрасывается даже в no-throw version of recursive_directory_iterator.... (в которой параметр в конструкторе задается) |
|
|
Iron Bug |
![]()
Сообщение
#3
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Модератор Сообщений: 1611 Регистрация: 6.2.2009 Из: Yekaterinburg Пользователь №: 533 Спасибо сказали: 219 раз(а) Репутация: ![]() ![]() ![]() |
причем, вроде как такое исключение выбрасывается даже в no-throw version of recursive_directory_iterator.... (в которой параметр в конструкторе задается) ну, как вариант - просто поправить сорцы, как тебе надо. я иногда свои патчи к бусту пишу, если что-то очень нужно ![]() |
|
|
![]() ![]() ![]() |
![]() |
|
Текстовая версия | Сейчас: 13.4.2025, 9:07 |