【发布时间】:2012-01-23 06:30:42
【问题描述】:
我有一个解析 XML 文件的进程。
这发生在 PAckage 类中。
Package 类有一个 Delegate,它将对象设置为无效状态并捕获有关 Package Class 发生错误的详细信息
为简单起见,我展示的是传递给包的文件..
即`
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 块捕获
我担心的是我正在为程序流使用异常......我应该如何看待解决这个问题或者这是一个有效的模式。
【问题讨论】:
-
标签多久是空的?
-
它不应该是......仅在错误时
标签: c# design-patterns logging ooad