CreateDocument(string templatePath)
{
Document doc = OpenDocument(templatePath);
Picture pic = GetLogo();
AddLogo(doc, pic, templatePath);
}
AddLogo(Document doc, Picture logo, string templatePath)
{
Picture placeholder = doc.FindLogoPlaceholder();
if (placeholder.Size != logo.Size)
{
throw new ApplicationException(
String.Format("Invalid template {0}, logo size: {1}, required: {2}",
templatePath, placeholder.Size, logo.Size
));
}
}
考虑上面的代码作为我刚刚组成的示例。
注意,将
templatePath
传递到AddLogo
方法的唯一原因是为了促进异常的产生。今天我的代码中有一些需要执行此操作的内容,感觉对我来说真是一种令人讨厌的代码气味。但是我对异常处理模式不太熟悉,而且我真的看不到任何更好的方法。
我想知道您的想法是什么,以及是否有更好的模式来应对这种情况。
最佳答案
在更高级别上创建异常:
CreateDocument(string templatePath)
{
Document doc = OpenDocument(templatePath);
Picture pic = GetLogo();
try {
AddLogo(doc, pic);
} catch (InvalidLogoSize e) {
throw new ApplicationException(
String.Format("Invalid template {0}, logo size: {1}, required: {2}",
templatePath, e.pSize, e.lSize
));
}
}
AddLogo(Document doc, Picture logo)
{
Picture placeholder = doc.FindLogoPlaceholder();
if (placeholder.Size != logo.Size)
{
throw new InvalidLogoSizeException(placeholder.Size, logo.Size);
}
}
关于c# - 仅将参数用于内部功能中的异常报告,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4193826/