我只是想知道如何解决我的方案,这是我的代码
try
{
bool b;
foreach (string file in files)
{
#region donloadfiles
if (b = file.Contains(story))
{
try
{
logger.Info("calling xml creation Method");
baseMeta(story, XML);
logger.Info("XML created");
}
catch (Exception ex)
{ logger.Error(ex.Message); throw; }
logger.Info("calling Download Method");
Download(file, story, xml, program);
logger.Info("Download Method processed successfully");
}
#endregion
}
}
catch (Exception ex)
{ logger.Error(ex.Message); throw; }
正如所承诺的,这是我的主要方法包含try catch block
try
{
//update the status here in DB
Status = "Closed";
Update(status);
}
catch (Exception ex)
{
Status = "Failed";
Update(status);
break;
}
我有目录“for eg:C:\”我的getlist方法获取所有记录并将其传递给我的foreach循环“foreach(文件中的字符串文件)”然后我有一个条件
如果(b = file.Contains(story))检查我的任何文件都有“故事”的名称,那么在里面做一些逻辑。这件事情很好。
现在我要做的是,如果没有任何文件匹配,那么我必须强制调用catch并抛出main catch,在主catch中进行一些逻辑更新。
有人请建议我如何解决这个问题。
提前致谢
答案 0 :(得分:3)
我想要做的是,如果没有任何文件匹配,那么我有 强行召唤捕获并投掷到主捕获,我正在做一些 在我的主要捕获中进行逻辑更新。
bool anyMatch = false;
foreach (.....)
{
if (b = file.Contains(story))
anyMatch = true;
}
if(!anyMatch)
throw ... //this will be caught by main catch
将一个bool变量保留在foreach循环之外。如果任何文件匹配,则将其设置为true。如果在foreach循环抛出异常结束时为假
答案 1 :(得分:1)
亚瑟,使用例外来管理流程是一个不错的想法! 例外是管理错误,而不是处理代码执行中的预期条件。
一个更好的方法(从长远来看:相信我这个)就是在没有文件匹配而不是抛出异常时从你的方法中返回一些值。
类似的东西:
#region donloadfiles
if (b = file.Contains(story))
{
try
{
logger.Info("calling xml creation Method");
baseMeta(story, XML);
logger.Info("XML created");
}
catch (Exception ex)
{ logger.Error(ex.Message); throw; }
logger.Info("calling Download Method");
Download(file, story, xml, program);
logger.Info("Download Method processed successfully");
}
else return "no matches found";
#endregion
一旦你找到了#34;没有找到匹配项,就从那里开始处理这个过程"调用此方法的地方的值。