mirror of
https://github.com/introlab/rtabmap.git
synced 2026-10-03 16:47:47 +08:00
CameraOrbbecSDK: catch ob::Error in init() instead of crashing
Device open can throw ob::Error (e.g. uvc_open access denied on macOS without camera permission, or an unsupported stream config). The throw was uncaught and aborted the whole process. Wrap the device-access body of init() in a try/catch that logs the error and returns false so the caller can handle the failure gracefully. Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
This commit is contained in:
co-authored by
Claude Opus 4.8
parent
703dc3a380
commit
21b50306cf
@@ -220,6 +220,12 @@ bool CameraOrbbecSDK::init(const std::string & calibrationFolder, const std::str
|
||||
#ifdef RTABMAP_ORBBEC_SDK
|
||||
this->close();
|
||||
|
||||
// The Orbbec SDK reports failures by throwing ob::Error (e.g. uvc_open
|
||||
// access denied on macOS without camera permission, or unsupported config).
|
||||
// Catch them here so init() logs the error and returns false instead of
|
||||
// letting the exception propagate and abort the whole process.
|
||||
try {
|
||||
|
||||
std::shared_ptr<ob::Device> device;
|
||||
|
||||
ob::Context context;
|
||||
@@ -546,6 +552,14 @@ bool CameraOrbbecSDK::init(const std::string & calibrationFolder, const std::str
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
||||
catch(const ob::Error & e)
|
||||
{
|
||||
UERROR("Failed to initialize Orbbec camera: %s", e.what());
|
||||
this->close();
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
#else
|
||||
UERROR("CameraOrbbecSDK: RTAB-Map is not built with Orbbec SDK support!");
|
||||
|
||||
Reference in New Issue
Block a user