标签: c++ opencv
OpenCV throws exceptions when hitting critical errors,在文档中很少(我敢说我从未说过)提到特定函数是否抛出。例如,请参阅documentation on the watershed algorithm
我想捕捉它们发生地点附近的错误,例如,在try-catch中将调用包装到分水岭。但是文档没有说明函数是否抛出,因此将它包装在try-catch中可能是一种错误的安全措施。
我可以假设所有OpenCV函数都抛出异常吗?
答案 0 :(得分:2)
在大多数情况下,是的。许多OpenCV方法很可能会执行CV_ASSERT来调用cvError。反过来,cv::error将记录并抛出异常。
CV_ASSERT
cvError
cv::error
但文档没有说明函数是否抛出,因此将其包装在try-catch中可能是一种错误的安全措施。
我的经验法则是,如果方法返回void,并且该方法是操纵的和/或作用于资源,那么包装try-catch是明智的。如果有疑问,我将评估方法的源代码,以查看断言检查的内容。
void