本文提供了此 API 参考文档的补充说明。
当特定方法、get 访问器或 set 访问器作为类型成员存在但未实现时,会引发NotImplementedException异常。
NotImplementedException 使用支持引用相等性的默认 Object.Equals 实现。 有关实例 NotImplementedException的初始值列表,请参阅 NotImplementedException 构造函数。
引发异常
当该成员仍在开发中时,可以选择在自己的类型中的属性或方法中引发 NotImplementedException 异常,并且稍后才会在生产代码中实现。 换句话说, NotImplementedException 异常相当于“仍在开发”。
处理异常
异常 NotImplementedException 指示您尝试调用的方法或属性没有实现,因此不提供任何功能。 因此,不应在 try/catch
块中处理此错误。 相反,您应该从代码中删除成员调用。 在库的生产版本中实现成员时,可以包含对该成员的调用。
在某些情况下, NotImplementedException 异常可能不用于指示仍在开发中的预生产库中的功能。 但是,这仍然指示该功能不可用,应从代码中删除成员调用。
NotImplementedException 和其他异常类型
.NET 还包括另外两种异常类型,NotSupportedException 和 PlatformNotSupportedException,指示某一类型的特定成员没有实现。 在以下条件下,应引发其中一个异常,而不是 NotImplementedException 异常:
如果设计了包含一个或多个成员的类型,并在某些平台或版本上可用,但在其他平台或版本上不可用,则会在不支持该功能的平台上引发 PlatformNotSupportedException 异常。
无法实现接口成员或重写抽象基类方法时,抛出NotSupportedException异常。
例如,Convert.ToInt32(DateTime)方法会引发NotSupportedException异常,因为日期和时间与32位有符号整数之间不存在有意义的转换。 在这种情况下,必须存在该方法,因为Convert类实现了IConvertible接口。
如果已实现抽象基类并向其添加了必须由派生类替代的新成员,则还应引发 NotSupportedException 异常。 在这种情况下,使成员抽象会导致现有子类无法加载。