[英]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.