[英]Why "OpenCV's CV_Error" isn't catchable in Android owned C++ sources?
我在一个 android 项目中使用 OpenCV(4.2.0)。 当从 android 项目的 C++ 文件调用一些 opencv 方法时,opencv 抛出CV_Error
并且应用程序终止/崩溃。 我想处理异常并恢复程序,而不是崩溃。 无论如何要在项目的 C++ 文件中捕获这些异常吗? 我尝试了以下方法,但它不起作用。
try {
......
} catch (...) {
}
这是 crashlytics 的堆栈跟踪
由于某种原因, CV_error #define CV_Error( code, msg ) cv::error( code, msg, CV_Func, __FILE__, __LINE__ )
在 android 项目拥有的 C++ 文件中无法捕获。 我什至尝试了以下只是为了检查。 不执行 catch 块。
try {
CV_Error(Error::StsBadArg, "Quadrangle is nonconvex or degenerated.");
} catch (...) {
// not catched
}
如果其他人也遇到同样的问题,只需添加答案。
这个问题在某种程度上与项目中使用的ndkVersion
有关。 将ndkVersion
升级到22.1.7171670
后,在 android 项目中成功捕获了CV_Error
异常。
因此解决方案是在应用程序的build.gradle
文件中添加以下行。
ndkVersion '22.1.7171670'
android {
defaultConfig {
.......
ndkVersion '22.1.7171670'
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.