抽象クラスで、具象クラスに提供して欲しいメソッドを記述するときに使えそう。 単なるraiseでRuntimeErrorを発生させるよりは、意図の分かりやすさとStandardErrorに含まれない点で良い。
class AbstractCollector
def collect
raise NotImpementedError, "Implement #{self.class}#collect"
end
end
class ConcreteCollector < AbstractCollector
def collect
...
end
end
$ refe NotImplementedError
class NotImplementedError < ScriptError
実装されていない機能が呼び出されたときに発生します。
NotImplementedError.ancestors
[
NotImplementedError,
ScriptError,
Exception,
Object,
PP::ObjectMixin,
Kernel,
BasicObject,
]
標準ライブラリのProcess::Sysで、 プラットフォーム依存の機能を利用する場合に利用されている例を見つけた。
$ refe Process::Sys.getuid
Process::Sys.getuid
--- getuid -> Integer
システムコールの [[man:getuid(2)]] を呼びます。返り値を整数で返します。
@raise NotImplementedError システムコールが現在のプラットフォームで提供されていない場合に発生します。