假设我有一个抽象类:
abstract class MyAbstract
{
protected abstract object ImplementMePlz();
public object DoSomething()
{
// Some logic here
var result = ImplementMePlz();
if (result == null)
throw new YourChildClassIsStupidException("ImplementMePlz() should never return null.");
return result;
}
}
在这种情况下我应该抛出什么样的异常? .NET框架中是否有指定的异常,还是应该创建自己的自定义异常?
答案 0 :(得分:4)
问题的答案“.NET框架中是否存在指定的异常?”是“不” - 没有这样的例外。
如果我是你,我会创建一个自定义例外。
答案 1 :(得分:1)
您应该创建自己的异常类。我知道处理这种情况的框架也不例外。为什么?我认为框架不需要这个例外。
另外,我建议首先使用Code Contracts来防止异常。
答案 2 :(得分:0)
这取决于您的子类返回null的原因。在子类中抛出异常可能更有意义,因为它可以更好地理解为什么它返回null并且可以产生更具信息性的异常。
如果您无法控制子类,那么您应该做两件事之一。
您可以从null返回中推断出一些信息。您应该创建一个传递该知识的例外,例如API声明如果其中一个输入无效,则应返回null,抛出InvalidArgumentExpection。
你只知道它不应该为null,如果是这种情况,抛出ArgumentNull异常或类似的东西