Imatest IT 4.2以降、APIユーザーがエラーを処理するためのより優れた方法を提供することを目的として、例外階層が実装されました。このページは、 Imatestがスローする可能性のある例外と、 Imatest IT/DLLでのそれらの処理方法に関するリファレンスとして作成されています。
例外階層
以下に、Imatest 用に定義された例外階層を示します。この表では、インデントが増加するほど、特定の例外がインデントの少ない上位の例外を継承していることを示します。Imatest ITライブラリは、基となる MATLAB ルーチンによって生成される例外もスローする可能性があることに注意してください。Imatest IT は、 Imatest例外と MATLAB 例外を区別するために必要な機能を提供します。
当ライブラリによってスローされる例外はすべて、 std::exceptionを継承する MATLAB クラスであるmwExceptionクラスのインスタンスです。
例外名 | 注記 |
|---|---|
ImatestException | Imatestのすべての例外処理の基底クラス。 |
構成例外 | Imatestの無効な設定に関連するエラーを処理するための例外。例えば、無効なエントリを含むINIファイルが提供された場合など。 |
データ例外 | これは、Imatestデータオブジェクトに問題が発生した場合にスローされる例外です。 |
データコンストラクター例外 | これは、Imatestデータオブジェクトのコンストラクタに問題が発生した場合にスローされる例外です。 |
画像解析例外 | ユーザーが提供した画像ソースに起因するエラーは例外とする。 |
AutoDetectException | 自動検出アルゴリズムに関連するエラーは例外とする。 |
作物例外 | 不適切なトリミングによって生じた一般的なエラーは例外とする。 |
DetectionException | この例外は、Imatestのフィーチャー検出アルゴリズム内で発生するエラーに適用されます。 |
RoiFailureException | ROIに問題がある場合、例えば検出されたエッジがROIの両端に近すぎる場合など、エラーが発生する例外的なケース。 |
| ImageSourceException | ユーザーが提供した画像ソースに起因するエラーは例外とする。 |
BadFramingException | ただし、画像内のテストチャートがカメラと適切に位置合わせされていなかった場合、つまりフレーム内に収まっていなかった場合は例外です。 |
画像取得例外 | 画像取得インターフェース(例:AndroidまたはOmnivision API関数)によって発生したエラーは例外となります。 |
イメージ例外 | 画像ファイル特有のエラー(動画ファイルとは異なる)については例外とする。 |
BadImageSizeException | 画像サイズが小さすぎて分析に役立たない場合の例外。 |
空のイメージ例外 | 解析に使用できるはずの画像配列が存在するはずだったにもかかわらず、代わりに空の画像配列が検出された場合の例外。 |
サポートされていないフォーマット例外 | サポートされていない画像または動画フォーマットが提供された場合の例外。 |
ビデオ例外 | 動画ファイルに関する一般的なエラーについては例外とする。 |
ImatestIOException | 入出力に関する一般的な問題の場合は例外とする。 |
ImatestCannotOpenFileException | Imatestがファイルを開けない場合、つまり、ファイルが見つからない以外の理由で読み取り権限または書き込み権限を取得できない場合の例外。 |
ImatestFileNotFoundException | 指定されたファイルが見つからない場合の例外処理。 |
ImatestSocketException | ソケット通信におけるエラー発生時にスローされる例外。 |
| ライセンス例外 | サードパーティのライセンスライブラリまたはシステムへの外部呼び出しに関連するエラーの例外。たとえば、Nalpeiron ライブラリへの呼び出しがエラー コードを返す場合。 |
| 出力例外 | ユーザーに提供される出力に関連するエラー(例:グラフやテキストベースの出力に関するエラー)は例外です。 |
JsonException | JSONファイルの読み書きに関するエラーに対する例外。 |
プロット例外 | Imatestがユーザーに出力するグラフにおけるエラーに対する例外。 |
XmlException | XMLファイルの読み書きにおけるエラーに対する例外。 |
ParameterException | 関数パラメータに関連するエラーに対する例外。 |
IncorrectNumInputsException | 関数に誤った数の入力が与えられた場合の例外。 |
| IncorrectNumOutputsException | 関数に誤った数の出力が指定された場合の例外。 |
| InputFormatException | 入力パラメータのフォーマットが正しくない場合(長さが間違っているなど)のエラーは例外となります。 |
| WrongInputTypeException | 入力パラメータの型またはクラスが間違っている場合のエラーに対する例外。 |
UIException | ユーザーインターフェースに関する一般的なエラーは例外です。 |
UserCancelException | ユーザーがキャンセルボタンをクリックした際に発生する可能性のある例外。 |
関数プロトタイプおよびその他のライブラリリソース
mwExceptionクラスには例外を示すメンバーがないため、 Imatest ITライブラリには、最後にスローされた例外の識別子を取得する関数が含まれています。関数getExceptionID () は、catch ブロック内で呼び出すことを想定しています (以下の例を参照)。
| getExceptionID (int nargout 、mwArray& errID、 mwArray& errName ) | 最後の例外の識別子と名前を取得するために呼び出します。 |
errIDパラメータは、MATLAB 配列クラスである mwArray であり、例外を識別する符号付き整数を含みます。errNameには、例外の名前を含む文字列が含まれます。入力引数nargout は2 である必要があります。
Imatest ITライブラリには、 Imatest例外階層の識別子の列挙型と定数char*宣言を含む追加のヘッダーファイル( imatest_exception_IDs.h )が付属しています。imatest_exception_IDs.hで定義されている値は、getExceptionID()によって返される値に対応します。
例:例外の種類を特定する方法
Imatest の例外と Matlab の例外を区別するには、 getExceptionIDを使用して例外識別子を取得する必要があります。Imatest の例外の識別子の全リストは、 Imatest ITに同梱されているimatest_exception_IDs.hヘッダーファイルで定義されています。例外識別子を取得する例を以下に示します。
try {
// call an Imatest library function ...
} catch(mwException& mwe) {
std::cout << "Error!" << std::endl;
std::cout << mwe.what() << std::endl;
mwe.print_stack_trace(); // print the stack trace to std::cerr
mwArray errName, errID;
getExceptionID(2, errID, errName);
std::string exceptName((const char*)errName.ToString());
int exceptID = errID.Get(1,1);
// Handle exceptions using definitions in imatest_exception_IDs.h...
} catch(const std::exception& ex) {
// Handle exceptions ...
}関連するINIファイル設定
Imatest INI ファイルの[api]セクションにcontinue_on_error INI キーが追加されました。continue_on_errorを使用すると、 Imatest ITで画像をバッチ処理する際に発生する可能性のある Imatest 例外を抑制できます。continue_on_errorを1 に設定すると例外は抑制され、0 に設定すると例外がスローされます。詳細については、次の「Imatest IT に影響を与えるパラメーター」を参照してください。