ITool GetTool(Guid tool)
{
if (tool == Hammer.Id)
return new Hammer();
else if (tool == Drill.Id)
return new Drill();
else
throw new ....?
}
Run Code Online (Sandbox Code Playgroud)
扔在这里最合适的异常类型是什么?NotSupportedException是我发现的最接近但我不认为这是正确的.
我会选择一个简单的ArgumentException或ArgumentOutOfRangeException.
对后者的描述对我来说恰到好处:
当参数的值超出被调用方法定义的允许值范围时引发的异常.
如果你认为一组允许值是一个"范围",那就没关系,我会说.
你肯定要在这里使用Guid吗?您可以使用有效工具的枚举吗?
编辑:回答创建自己的例外的建议:它会提供什么价值?你真的想抓住那个特定的例外吗?如果没有,哪里有好处?如果您将捕获该异常,那么在调用该方法之前,您是否应该验证您的参数?我发现创建一个自定义异常很少,除非真的没有什么适合.