@message
作品の明示的な設定
class MyError extends Error
constructor: (@message,@cause)->
Error.captureStackTrace(@,@)
coffee> ee=new MyError 'test'
{ message: 'test', cause: undefined }
coffee> "#{ee}"
'Error: test'
coffee> ee.message
'test'
coffee> ee instanceof MyError
true
coffee> ee instanceof Error
true
coffee> throw new MyError 'test'
Error: test
at new MyError (repl:10:11)
...
super
別のクラスが構築されている場合は問題ありませんMyError
class OError extends MyError
constructor: (msg)->
super msg
@name='OError'
util.isError
以下は、正しいメッセージを表示しinstanceof Error
ますinstanceof Error1
。したがってError
、「サブクラス」ではなく、 の特殊なコンストラクターです。
class Error1 extends Error
constructor: (@message)->
self = super
self.name = 'Error1'
return self
これがためのものですnode: '0.10.1', 'coffee-script': '1.6.3'
この記事の最後の例bjb.io
は (Coffeescript で):
CustomError = (msg)->
self = new Error msg
self.name = 'CustomError'
self.__proto__ = CustomError.prototype
return self
CustomError.prototype.__proto__= Error.prototype
# CustomError::__proto__= Error:: # I think
これは、すべてのテスト、、、、をutil.isError
満たします。instanceof Error
instanceof CustomError
"#{new CustomError 'xxx'}"