所有OpenCV函数都会抛出异常吗?

时间:2016-12-27 15:19:36

标签: c++ opencv

然而,

OpenCV throws exceptions when hitting critical errors,在文档中很少(我敢说我从未说过)提到特定函数是否抛出。例如,请参阅documentation on the watershed algorithm

我想捕捉它们发生地点附近的错误,例如,在try-catch中将调用包装到分水岭。但是文档没有说明函数是否抛出,因此将它包装在try-catch中可能是一种错误的安全措施。

我可以假设所有OpenCV函数都抛出异常吗?

1 个答案:

答案 0 :(得分:2)

  

我可以假设所有OpenCV函数都抛出异常吗?

在大多数情况下,是的。许多OpenCV方法很可能会执行CV_ASSERT来调用cvError。反过来,cv::error将记录并抛出异常。

  

但文档没有说明函数是否抛出,因此将其包装在try-catch中可能是一种错误的安全措施。

我的经验法则是,如果方法返回void,并且该方法是操纵的和/或作用于资源,那么包装try-catch是明智的。如果有疑问,我将评估方法的源代码,以查看断言检查的内容。