XML ファイルを解析するプロセスがあります。
これは、パッケージ クラスで発生しています。
Package クラスには、オブジェクトを無効な状態に設定し、Package クラスで発生したエラーに関する詳細情報を取得する Delegate があります。
簡単にするために、パッケージに渡される filitem を示しています。
つまり `
foreach( var package in Packages)
{
try
{
package.ProcessXml(fileitem.nextfile);
}
catch (CustomeErrorException ex)
{
Logger.LogError(ex)
}
}
パッケージ内での検証は次のようになります
var Album = xml.Descendants()
.Select(albumShards => new Album {
Label = (string)albumShards.Descendants(TempAlbum.LabelLoc).FirstOrDefault() == "" ?
FailPackage("Error on label Load",Componets.Package,SubComp.BuildAlbum ) : (string)albumShards.Descendants(TempAlbum.LabelLoc).FirstOrDefault()
この検証では、ラベルに "" が返されるかどうかを確認します...もしそうなら、エラー情報で Failpackage を呼び出し、例外を作成します
protected override void FailPackage(string msg, LogItem logItem)
{
Valid = ProcessState.Bad;
Logger.LogError(msg,logItem);
throw CustomErrorException(msg, Logitem);
}
含まれている try catch ブロックを介してキャプチャされる
私の懸念は、プログラムフローの例外を使用していることです...他にどのようにこの問題にアプローチする必要があるか、これは有効なパターンですか.