diff --git a/src/main.cpp b/src/main.cpp index 2550126..e3d48e6 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -15,8 +15,18 @@ static Napi::Object getDiskUsage(const Napi::CallbackInfo& info) { Napi::String path = info[0].As(); std::string pathText = path; - - DiskUsage usage = GetDiskUsage(pathText.c_str()); + + DiskUsage usage = {}; + try { + usage = GetDiskUsage(pathText.c_str()); + } catch (const std::runtime_error& e) { + throw Napi::Error::New(env, std::string("GetDiskUsage failed: ") + e.what()); + } catch (const SystemError& e) { + std::string errorMessage = "SystemError: " + e.message() + " (syscall: " + e.syscall() + ", errno: " + std::to_string(e.errorno()) + ", path: " + e.path() + ")"; + throw Napi::Error::New(env, errorMessage); + } catch (...) { + throw Napi::Error::New(env, "An unknown error occurred while getting disk usage"); + } Napi::Object result = Napi::Object::New(env); result.Set("available", Napi::Number::New(env, static_cast(usage.available)));