推奨: 関係管理を必要とする属性に関して次の防御コーディング標準を使用してください。
表 113 内のいずれかのマッピング API
を呼び出す前に、ソース属性が null でない
ことを確認してください。属性が null
の場合、エラーがログに記録され、メソッドを呼び出しません。
マッピング API メソッド | ログに記録するエラー番号 | マップの実行を停止しますか? |
---|---|---|
maintainSimpleIdentityRelationship() |
5000
| はい |
foreignKeyXref() foreignKeyLookup() |
5003
| マッピング仕様で、マップの実行を停止するかどうかを指定します。 |
マップの実行を停止するには、MapFailureException 例外をスローします。
表 114 のマッピング API
メソッドから発生するすべての例外を確実にキャッチするには、マッピング API
メソッドの呼び出しを try/catch
ブロックの内部で行い、catch
セクションの中で該当するエラー・メッセージをログに記録します。
例: 次のコード・フラグメントには、RelationshipRuntimeException および CxMissingIDException 例外の両方をキャッチし、情報メッセージをログに記録してサーバーにより生成されたエラー・テキストを表示し、さらに MapFailureException をスローしてマップの実行を停止する maintainSimpleIdentityRelationship() メソッドの呼び出しが組み込まれています。
try { // API call IdentityRelationship.maintainSimpleIdentityRelationship(...); } catch (RelationshipRuntimeException re) { logError(5001); logInfo(re.toString()); throw new MapFailureException("RelationshipRuntimeException"); } catch (CxMissingIDException ce) { logError(5002); logInfo(ce.toString()); throw new MapFailureException("RelationshipRuntimeException"); }
例: 次のコード・フラグメントは、RelationshipRuntimeException 例外をキャッチし、情報メッセージをログに記録してサーバーにより生成されたエラー・テキストを表示して、その後、宛先属性が正常にマップされたかどうかを検査する foreignKeyLookup() メソッドの例外処理を示します。宛先属性が正常にマップされない場合、このコード・フラグメントでは、マップが実行を停止する必要がある場合はエラー 5007、マップが実行を継続できる場合は エラー 5008 を表示します。
try { // API call IdentityRelationship.foreignKeyLookup(...); } catch (RelationshipRuntimeException re) { logInfo(re.toString()); } if (ObjDest.isNull("DestAttr") { logError(5007, "DestAttrName", "SrcAttrName", "RelationshipName", "ParticipantName", strInitiator); throw new MapFailureException("foreignKeyLookup() failed"); } If the map execution is to be continued, use the following if statement: if (ObjDest.isNull("DestAttr") { logError(5008, "DestAttrName", "SrcAttrName", "RelationshipName", "ParticipantName", strInitiator); }
例: 次のコード・フラグメントは、RelationshipRuntimeException 例外をキャッチして、情報メッセージをログに記録してサーバーにより生成されたエラー・テキストを表示し、その後、宛先属性が正常にマップされたかどうかを検査する foreignKeyXref() メソッドの例外処理を示します。宛先属性が正常にマップされない場合、このコード・フラグメントでは、エラー・メッセージ 5009 を表示し、MapFailureException をスローしてマップの実行を停止します。
try { // API call IdentityRelationship.foreignKeyXref(...); } catch (RelationshipRuntimeException re) { logInfo(re.toString()); } if (ObjDest.isNull("DestAttr") { logError(5009, "DestAttrName", "SrcAttrName", "RelationshipName", "ParticipantName", strInitiator); throw new MapFailureException("foreignKeyXref() failed"); }