using std::cout;
using std::dynamic_pointer_cast;
+using std::exception;
using std::function;
using std::list;
using std::make_shared;
using namespace boost::filesystem;
LOG_GENERAL ("DCPContent::read_sub_directory reads %1", p.string());
- for (auto i: directory_iterator(p)) {
- if (is_regular_file(i.path())) {
- LOG_GENERAL ("Inside there's regular file %1", i.path().string());
- add_path (i.path());
- } else if (is_directory(i.path()) && i.path().filename() != ".AppleDouble") {
- LOG_GENERAL ("Inside there's directory %1", i.path().string());
- read_sub_directory (i.path());
- } else {
- LOG_GENERAL("Ignoring %1 from inside: status is %2", i.path().string(), static_cast<int>(status(i.path()).type()));
+ try {
+ for (auto i: directory_iterator(p)) {
+ if (is_regular_file(i.path())) {
+ LOG_GENERAL ("Inside there's regular file %1", i.path().string());
+ add_path (i.path());
+ } else if (is_directory(i.path()) && i.path().filename() != ".AppleDouble") {
+ LOG_GENERAL ("Inside there's directory %1", i.path().string());
+ read_sub_directory (i.path());
+ } else {
+ LOG_GENERAL("Ignoring %1 from inside: status is %2", i.path().string(), static_cast<int>(status(i.path()).type()));
+ }
}
+ } catch (exception& e) {
+ LOG_GENERAL("Failed to iterate over %1: %2", p.string(), e.what());
}
}