我想创建一个具有常见异常处理模式的抽象类:
public abstract class Widget
{
public IFoo CreateFoo()
{
try
{
CreateFooUnsafe();
}
catch(Exception ex)
{
throw new WidgetException(ex, moreData, evenMoar);
}
}
protected abstract IFoo CreateFooUnsafe();
}
目的是为所有派生对象提供标准的异常处理模式。不应期望抽象 CreateFooUnsafe()
方法包含任何异常处理。实现可能会是一行 return new Foo(...)
我想知道是否有与此模式相关的标准命名约定,特别是在需要抛出异常的代码的情况下?
上面的名字看起来有些合适,但并非完全没有味道。
最佳答案
这似乎是 template method pattern 的示例。
模板方法是一种可以用许多面向对象语言表达的模式,通过使用公共(public)非虚函数来实现一些总体行为,并使用 protected 虚(或抽象)方法来补充子类中的具体行为.
在您的示例中,您使用模板方法来捕获从内部实现中冒出的所有异常,并将它们包装在自定义异常类型中。我对这一特定实践的一个评论是,只有当您可以添加允许调用代码更好地处理异常的上下文信息时,它才有意义。否则,最好只是允许源异常传播出去。
关于c# - 模板方法模式的这个示例是否有标准命名约定?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4796865/