He hecho este código de prueba en javascript para averiguar por qué no persiste el campo message cuando extiendo la 'clase' Error.
Código javascript:
La respuesta a la salida es "bla ble bli "Ver original
function A(message) { this.message = message } function B(message) { A.call(this, message) } B.prototype = Object.create(A.prototype) B.prototype.constructor = B function ValidationError(message) { Error.call(this, message) } ValidationError.prototype = Object.create(Error.prototype) ValidationError.prototype.constructor = ValidationError var a = new A('bla') var b = new B('ble') var e = new Error('bli') var ve = new ValidationError('blo') var text = a.message + ' ' + b.message + ' ' + e.message + ' ' + ve.message alert(text)
http://jsfiddle.net/jjjvpr04/1/
Si no queda más remedio lo haré al estilo que dice MDN:
Código javascript:
Ver original
function MyError(message) { this.name = 'MyError'; this.message = message || 'Default Message'; } MyError.prototype = new Error(); MyError.prototype.constructor = MyError;
Pero me parece un comportamiento extraño y no sé si estoy perdiéndome algo que aún no he acabado de comprender bien.
Un saludo!