System.NotImplementedException 类

本文提供了此 API 参考文档的补充说明。

当特定方法、get 访问器或 set 访问器作为类型的成员存在但未实现时,将会引发 NotImplementedException 异常。

NotImplementedException 使用默认的 Object.Equals 实现,这会支持引用相等性。 有关 NotImplementedException 实例初始值的列表,请参阅 NotImplementedException 构造函数。

引发异常

当该成员仍处于开发状态,并且以后仅在生产代码中实现时,可以选择在自己的类型中的属性或方法中引发 NotImplementedException 异常。 换句话说,NotImplementedException 异常应与“仍在开发”意义相同。

处理异常

NotImplementedException 异常指示尝试调用的方法或属性没有实现,因此不会提供任何功能。 因此,不应在 try/catch 块中处理此错误。 相反,应从代码中移除成员调用。 在库的生产版本中实现成员时,可以包含对该成员的调用。

在某些情况下,NotImplementedException 异常可能不会用于指示预生产库中仍处于开发状态的功能。 但这仍然指示该功能不可用,并应从代码中移除成员调用。

NotImplementedException 和其他异常类型

.NET 还包括 NotSupportedExceptionPlatformNotSupportedException 另外两种类型,用于指示不存在某个类型的特定成员的实现。 在以下条件下,应引发其中一个异常,而不是 NotImplementedException 异常:

  • 如果设计了包含一个或多个成员的类型,并在某些平台或版本上可用,但在其他平台或版本上不可用,则会在不支持该功能的平台上引发 PlatformNotSupportedException 异常。

  • 如果无法实现接口成员或无法替代抽象基类方法,则引发 NotSupportedException 异常。

    例如,Convert.ToInt32(DateTime) 方法会引发 NotSupportedException 异常,因为日期和时间与 32 位带符号整数之间不存在有意义的转换。 在这种情况下,必须存在该方法,因为 Convert 类会实现 IConvertible 接口。

如果已实现抽象基类并向其添加了必须由派生类替代的新成员,则还应引发 NotSupportedException 异常。 在这种情况下,将成员设为抽象会导致现有子类无法加载。