2016-12-27 16 views
1

OpenCV throws exceptions when hitting critical errorsしかし、ドキュメントでは、特定の関数がスローされたかどうかはめったにありません(私は決して言わない)。例えば、documentation on the watershed algorithmすべてのOpenCV関数は例外をスローしますか?

私はそれらが発生した場所に近いところでエラーを捕捉したいと思います。たとえば、コールをtry-catchでウォーターシェッドにラップします。しかし、ドキュメンテーションは、関数がスローするかどうかを述べていないので、try-catchでラップするとセキュリティが間違っている可能性があります。

すべてのOpenCV関数が例外をスローすると仮定できますか?

+1

メモリを使用しているものは、ほとんどが 'std :: bad_alloc'をスローする可能性があります。例外はポケモンではなく、「すべて」をキャッチする必要はありません。 – MSalters

答えて

2

すべてのOpenCV関数が例外をスローすると仮定できますか?

ほとんどの場合、はいです。多くのOpenCVメソッドは、CV_ASSERTを実行する可能性が高く、cvErrorを呼び出します。次に、cv::errorがログに記録し、例外をスローします。

しかし、ドキュメントでは、関数がスローされるかどうかは記述されていないため、try-catchでラップするとセキュリティが偽になる可能性があります。

私の経験則は、メソッドがvoidを返し、方法は整体であるおよび/またはリソースに作用するならば、それはのtry-catchでラップするのが賢明だということです。疑わしいときは、メソッドのソースコードを評価して、アサーションが何をチェックしているかを調べます。

+0

明確な回答、ありがとうございます。 – Attaque

関連する問題