1234567891011121314151617181920212223242526272829303132333435363738394041 |
- define(["../_base/lang"], function(lang){
- return function(name, ctor, base, props){
- base = base || Error;
- var ErrorCtor = function(message){
- if(base === Error){
- if(Error.captureStackTrace){
- Error.captureStackTrace(this, ErrorCtor);
- }
- // Error.call() operates on the returned error
- // object rather than operating on |this|
- var err = Error.call(this, message),
- prop;
- // Copy own properties from err to |this|
- for(prop in err){
- if(err.hasOwnProperty(prop)){
- this[prop] = err[prop];
- }
- }
- // messsage is non-enumerable in ES5
- this.message = message;
- // stack is non-enumerable in at least Firefox
- this.stack = err.stack;
- }else{
- base.apply(this, arguments);
- }
- if(ctor){
- ctor.apply(this, arguments);
- }
- };
- ErrorCtor.prototype = lang.delegate(base.prototype, props);
- ErrorCtor.prototype.name = name;
- ErrorCtor.prototype.constructor = ErrorCtor;
- return ErrorCtor;
- };
- });
|