mvcjs
Version:
Powerful lightweight mvc framework for nodejs
172 lines (158 loc) • 3.89 kB
JavaScript
;
/* global Type: true, core: true, util: true, DataError: true, SilentError: true, Exception: true, HttpError: true */
var di = require('../di'),
Type = di.load('typejs'),
core = di.load('core'),
DataError,
Exception,
HttpError,
SlientHttpError;
/**
* Stringify error message
* @param name
* @param trace
* @param message
* @param stack
* @param data
* @param code
* @returns {string}
*/
function toString(name, trace, message, stack, data, code) {
var m = name + ' ' + trace;
m += '\n';
m += message;
if (code) {
m += '\n';
m += 'CODE:' + code;
}
if (data) {
m += '\n';
m += data;
}
m += '\n';
m += stack;
return m;
}
/**
* @license Mit Licence 2014
* @since 0.0.1
* @author Igor Ivanovic
* @name Exception
*
* @constructor
* @description
* Exception is used to throw exception
*/
Exception = Type.create({},
{
_construct: function Exception(message, e) {
var stack;
if (Type.isObject(e)) {
if (e && e.message) {
message = message + ', ' + e.message;
}
stack = e.stack;
e = null;
} else if (Type.isString(e)) {
stack = e;
} else {
e = new Error();
stack = e.stack;
}
throw toString('Exception', core.trace(8, 9), message, stack);
}
}
);
/**
* @license Mit Licence 2014
* @since 0.0.1
* @author Igor Ivanovic
* @name DataError
*
* @constructor
* @description
* Exception is used to throw http error
*/
DataError = Exception.inherit({},
{
_construct: function DataError(data, message, e) {
var stack;
if (Type.isObject(e)) {
if (e && e.message) {
message = message + ', ' + e.message;
}
stack = e.stack;
e = null;
} else if (Type.isString(e)) {
stack = e;
} else {
e = new Error();
stack = e.stack;
}
throw toString('DataError', core.trace(8, 9), message, stack, core.inspect(data));
}
}
);
/**
* @license Mit Licence 2014
* @since 0.0.1
* @author Igor Ivanovic
* @name HttpError
*
* @constructor
* @description
* Exception is used to throw http error
*/
HttpError = DataError.inherit({},
{
_construct: function HttpError(code, data, message, e) {
var stack;
if (Type.isObject(e)) {
if (e && e.message) {
message = message + ', ' + e.message;
}
stack = e.stack;
e = null;
} else if (Type.isString(e)) {
stack = e;
} else {
e = new Error();
stack = e.stack;
}
throw toString('HttpError', core.trace(8, 9), message, stack, core.inspect(data), code);
}
}
);
/**
* @license Mit Licence 2014
* @since 0.0.1
* @author Igor Ivanovic
* @name silentHttpError
*
* @constructor
* @description
* SlientHttpError is an error without throw
* @return string
*/
function silentHttpError(code, data, message, e) {
var stack;
if (Type.isObject(e)) {
if (e && e.message) {
message = message + ', ' + e.message;
}
stack = e.stack;
e = null;
} else if (Type.isString(e)) {
stack = e;
} else {
e = new Error();
stack = e.stack;
}
return toString('SlientHttpError', core.trace(8, 9), message, stack, core.inspect(data), code);
}
module.exports = {
Exception: Exception,
HttpError: HttpError,
DataError: DataError,
silentHttpError: silentHttpError
};