all files / js/ errors.js

76.67% Statements 23/30
50% Branches 3/6
66.67% Functions 4/6
76.67% Lines 23/30
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105            12×   12× 12×   12× 12×                           10×     10×   10× 10× 10×                                                                                                                    
/**
 * Модуль, содержащий всякие полезные переменные и функции
 * @module Errors
 */
define([], function() {
 
    function CustomError(property) {
        this.name = this.name || "CustomError";
 
        this.property = property;
        this.message = this.name + ": " + property;
 
        Eif (Error.captureStackTrace) {
            Error.captureStackTrace(this, CustomError);
        } else {
            this.stack = (new Error()).stack;
        }
    }
 
    /**
     * @class
     * Класс ошибки, означающий неправильно переданный в функцию аргумент
     * @param {string} argName - название аргумента
     * @param {Object} arg - значение аргумента
     * @constructor module:Errors~ArgumentError
     */
    function ArgumentError(argName, arg) {
        Iif (typeof arg === 'function') {
            arg = 'function() {...}';
        } else {
            arg = JSON.stringify(arg);
        }
        arg = 'wrong function argument "' + argName + '": ' + arg;
        this.name = 'ArgumentError';
        CustomError.apply(this, [arg]);
    }
    ArgumentError.prototype = Object.create(CustomError.prototype);
    ArgumentError.prototype.constructor = ArgumentError;
 
    /**
     * @class
     * Класс ошибки, означающий, что путь от одной модели до другой модели не был найден
     * @param {ScreenModel} fromScreen - модель, из которой осуществлялся поиск
     * @param {ScreenModel} toScreen - модель, в которую осуществлялся поиск
     * @constructor module:Errors~PathNotFoundError
     */
    function PathNotFoundError(fromScreen, toScreen) {
        this.name = 'PathNotFoundError';
        var arg = 'path not found: from ' + fromScreen.toString() + ' to ' + toScreen.toString();
        CustomError.apply(this, [arg]);
    }
    PathNotFoundError.prototype = Object.create(CustomError.prototype);
    PathNotFoundError.prototype.constructor = PathNotFoundError;
 
    /**
     * @class
     * Класс ошибки, означающий критическую ошибку логики
     * @param {string} property - подробности ошибки
     * @constructor module:Errors~FatalError
     */
    function FatalError(property) {
        this.name = 'FatalError';
        CustomError.apply(this, arguments);
    }
    FatalError.prototype = Object.create(CustomError.prototype);
    FatalError.prototype.constructor = FatalError;
 
    /**
     * @class
     * Класс ошибки, означающий, что функция интерфейса еще не реализована
     * @param {string} module - название интерфейса
     * @param {string} functionName - название функции
     * @constructor module:Errors~NotRealizedError
     */
    function NotRealizedError(module, functionName) {
        this.name = 'NotRealizedError';
        var arg = 'Not realized ' + module + ':' + functionName;
        CustomError.apply(this, [arg]);
    }
    NotRealizedError.prototype = Object.create(CustomError.prototype);
    NotRealizedError.prototype.constructor = NotRealizedError;
 
    return /** @alias module:Errors */ {
        /**
         * Класс ошибки, означающий неправильно переданный в функцию аргумент
         * @type {module:Errors~ArgumentError}
         */
        ArgumentError: ArgumentError,
        /**
         * Класс ошибки, означающий, что путь от одной модели до другой модели не был найден
         * @type {module:Errors~PathNotFoundError}
         */
        PathNotFoundError: PathNotFoundError,
        /**
         * Класс ошибки, означающий, что функция интерфейса еще не реализована
         * @type {module:Errors~NotRealizedError}
         */
        NotRealizedError: NotRealizedError,
        /**
         * Класс ошибки, означающий критическую ошибку логики
         * @type {module:Errors~FatalError}
         */
        FatalError: FatalError
    };
});