簡體   English   中英

為什么在 Android 擁有的 C++ 源代碼中無法捕獲“OpenCV 的 CV_Error”?

[英]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 的堆棧跟蹤

這是 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM