2016-12-27 47 views
1

OpenCV throws exceptions when hitting critical errors,然而,在文檔中是很少(我敢說從來)提及的某個功能是否拋出。例如,請參閱documentation on the watershed algorithm所有的OpenCV函數都會拋出異常嗎?

我想捕捉接近它們出現位置的錯誤,例如,將試圖捕獲的分流打包到分水嶺。但是文檔並沒有說明該函數是否拋出,所以將其封裝在try-catch中可能是錯誤的安全性。

我可以假定所有OpenCV函數拋出異常?

+1

幾乎任何使用的內存可能拋出'的std :: bad_alloc'。例外不是口袋妖怪,沒有必要抓住所有人。 – MSalters

回答

2

我可以假定所有OpenCV函數拋出異常?

在大多數情況下,是的。許多OpenCV的方法將最有可能執行CV_ASSERT它將調用cvError。反過來,cv::error會記錄,並拋出異常。

但是文檔沒有說明該函數是否拋出,所以將其包裝在try-catch中可能是錯誤的安全性。

我的經驗法則法則是,如果該方法返回void,方法是操縱和/或行爲上的資源,那麼它是明智的一個try-catch來包裝。如果有疑問,我將評估該方法的源代碼,以查看斷言正在檢查的內容。

+0

明確的答案,謝謝。 – Attaque