Sébastien Cevey (2015-04-11T13:09:31.000Z)
d at domenic.me (2015-04-19T23:40:24.011Z)
Does the same apply to subclassing Error? I've been trying to do that but it doesn't seem to work as expected, in particular passing the message as argument to `super` doesn't seem to do anything. For example: ``` javascript class Foo extends Error { constructor(message) { super(message); } } var err1 = new Foo("arg"); console.log(err1); // plain Foo object console.log(err1.message); // "" (empty string!?) var err2 = new Error("arg"); console.log(err2); // Error object console.log(err2.message); // "arg" ``` The above is true both [with Traceur](https://google.github.io/traceur-compiler/demo/repl.html#class%20Foo%20extends%20Error%20{%0A%20%20constructor%28message%29%20{%0A%20%20%20%20super%28message%29%3B%0A%20%20}%0A}%0A%0Avar%20err1%20%3D%20new%20Foo%28%22arg%22%29%3B%0Aconsole.log%28err1%29%3B%20%2F%2F%20plain%20Foo%20object%0Aconsole.log%28err1.message%29%3B%20%2F%2F%20%22%22%20%28empty%20string!%3F%29%0A%0Avar%20err2%20%3D%20new%20Error%28%22arg%22%29%3B%0Aconsole.log%28err2%29%3B%20%2F%2F%20Error%20object%0Aconsole.log%28err2.message%29%3B%20%2F%2F%20%22arg%22) and [Babel](https://babeljs.io/repl/#?experimental=true&evaluate=true&loose=false&spec=false&code=class%20Foo%20extends%20Error%20{%0A%20%20constructor%28message%29%20{%0A%20%20%20%20super%28message%29%3B%0A%20%20}%0A}%0A%0Avar%20err1%20%3D%20new%20Foo%28%22arg%22%29%3B%0Aconsole.log%28err1%29%3B%20%2F%2F%20plain%20Foo%20object%0Aconsole.log%28err1.message%29%3B%20%2F%2F%20%22%22%20%28empty%20string!%3F%29%0A%0Avar%20err2%20%3D%20new%20Error%28%22arg%22%29%3B%0Aconsole.log%28err2%29%3B%20%2F%2F%20Error%20object%0Aconsole.log%28err2.message%29%3B%20%2F%2F%20%22arg%22).
d at domenic.me (2015-04-19T23:39:58.675Z)
Does the same apply to subclassing Error? I've been trying to do that but it doesn't seem to work as expected, in particular passing the message as argument to `super` doesn't seem to do anything. For example: ``` javascript class Foo extends Error { constructor(message) { super(message); } } var err1 = new Foo("arg"); console.log(err1); // plain Foo object console.log(err1.message); // "" (empty string!?) var err2 = new Error("arg"); console.log(err2); // Error object console.log(err2.message); // "arg" ``` The above is true both [with Traceur](https://google.github.io/traceur-compiler/demo/repl.html#class%20Foo%20extends%20Error%20%7B%0A%20%20constructor(message)%20%7B%0A%20%20%20%20super(message)%3B%0A%20%20%7D%0A%7D%0A%0Avar%20err1%20%3D%20new%20Foo(%22arg%22)%3B%0Aconsole.log(err1)%3B%20%2F%2F%20plain%20Foo%20object%0Aconsole.log(err1.message)%3B%20%2F%2F%20%22%22%20(empty%20string!%3F)%0A%0Avar%20err2%20%3D%20new%20Error(%22arg%22)%3B%0Aconsole.log(err2)%3B%20%2F%2F%20Error%20object%0Aconsole.log(err2.message)%3B%20%2F%2F%20%22arg%22) and [Babel](https://babeljs.io/repl/#?experimental=true&evaluate=true&loose=false&spec=false&code=class%20Foo%20extends%20Error%20%7B%0A%20%20constructor(message)%20%7B%0A%20%20%20%20super(message)%3B%0A%20%20%7D%0A%7D%0A%0Avar%20err1%20%3D%20new%20Foo(%22arg%22)%3B%0Aconsole.log(err1)%3B%20%2F%2F%20plain%20Foo%20object%0Aconsole.log(err1.message)%3B%20%2F%2F%20%22%22%20(empty%20string!%3F)%0A%0Avar%20err2%20%3D%20new%20Error(%22arg%22)%3B%0Aconsole.log(err2)%3B%20%2F%2F%20Error%20object%0Aconsole.log(err2.message)%3B%20%2F%2F%20%22arg%22).