ODK API のメソッドは、事前に定義した特定の条件を示す例外をスローできます。このセクションでは、Java コネクターの例外の処理方法に関して、次のトピックを取り上げます。
ODK API のメソッドが例外をスローする場合、この例外オブジェクト は、ODKException クラス、またはそのサブクラスからのオブジェクトです。これらのクラスは、Java Exception クラスから拡張されたものです。
ODK 例外を作成するには、ODKException() コンストラクターを使用します。表 62 は、例外オブジェクトの情報を取得するために ODKException クラスが提供する accessor メソッドを示しています。
メンバー | accessor メソッド |
---|---|
メッセージ・テキスト |
getMsg()
|
ODKException クラスは、特定のエラー条件を示すサブクラスをいくつか提供します (表 103 を参照)。
ODA 用のコードを作成する際に Java の try ステートメントと catch ステートメントを含めれば、ODK API のメソッドがスローした特定の例外を処理することができます。大半の ODK API メソッドのリファレンスの説明には、そのメソッドがスローする例外をリストした、「Exceptions」というタイトルの付いたセクションがあります。
図 76 は、ArmyAgent4 クラス内のサンプル Roman Army ODA からのコード・フラグメントで、getClientFile() メソッドがスローした例外をキャッチします。
図 76. getClientFile() からの例外のキャッチ
try { remotefile = ODKUtility.getODKUtility().getClientFile(filePath, this); }
catch (IOException ex) //file was not found { return null; }
//agent doesn't implement IGeneratesBinFiles, so "getClientFile" failed. catch (UnsupportedContentException ex) { //We'll return a random Son instance for now. return new Son("X" + ("" + new Date().hashCode()).substring(1), new Date().hashCode() % 10 + 2); }
一般に ODK API メソッドは、例外をスローする際に、メッセージおよび状況の情報を例外オブジェクトに含めません。ただし、必要な場合はメッセージを例外オブジェクトに含めることもできます。