Buenas.
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
:
Ver originalfunction 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)
La respuesta a la salida es "bla ble bli "
http://jsfiddle.net/jjjvpr04/1/
Si no queda más remedio lo haré al estilo que dice
MDN:
Código javascript
:
Ver originalfunction 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!