エラーハンドリング

以前のバージョンでは手動でスタックを巻き戻していましたが,それとは対照的に, OpenCV の新しいエラーハンドリング機構は例外を利用しています.

ある条件をチェックして,それを満たしていない場合にエラーを発生させたいならば, CV_Assert () または CV_Error () を利用してください.

CV_Assert(mymat.type() == CV_32FC1);
...

if( scaleValue < 0 || scaleValue > 1000 )
  CV_Error(CV_StsOutOfRange, "The scale value is out of range");

リリースビルド時には何のコードも生み出さない CV_DbgAssert もあります.

エラーを扱うには,標準的な例外ハンドリング機構を利用してください:

try
{
    ...
}
catch( cv::Exception& e )
{
    const char* err_msg = e.what();
    ...
}

cv::Exception の代わりに, std::exception と書くこともできます.前者は後者からの派生だからです.

当然ですが,この機構を上手く働かせるために,そして,オブジェクトの破棄で悩まないように, IplImage*CvMat* そして生ポインタ,を利用しないようにするべきです.通常は cv::Mat , std::vector<> , cv::Ptr などを利用するようにしましょう.

前のトピックへ

飽和計算

次のトピックへ

スレッド処理と再入可能性

このページ