    /**
     * Framework-wide error-handler.  Developers can override this method to provide
     * custom exception-handling.  Framework errors will often extend from the base
     * Ext.Error class.
     * @param {Object/Error} e The thrown exception object.
     * @member Ext
     */
    Ext.handleError = function(e) {
        throw e;
    };

    /**
     * @class Ext.Error
     * @extends Error
     * <p>A base error class. Future implementations are intended to provide more
     * robust error handling throughout the framework (<b>in the debug build only</b>)
     * to check for common errors and problems. The messages issued by this class
     * will aid error checking. Error checks will be automatically removed in the
     * production build so that performance is not negatively impacted.</p>
     * <p>Some sample messages currently implemented:</p><pre>
    "DataProxy attempted to execute an API-action but found an undefined
    url / function. Please review your Proxy url/api-configuration."
     * </pre><pre>
    "Could not locate your "root" property in your server response.
    Please review your JsonReader config to ensure the config-property
    "root" matches the property your server-response.  See the JsonReader
    docs for additional assistance."
     * </pre>
     * <p>An example of the code used for generating error messages:</p><pre><code>
    try {
        generateError({
            foo: 'bar'
        });
    }
    catch (e) {
        console.error(e);
    }
    function generateError(data) {
        throw new Ext.Error('foo-error', data);
    }
     * </code></pre>
     * @param {String} message
     */
    Ext.Error = function(message) {
        // Try to read the message from Ext.Error.lang
        this.message = (this.lang[message]) ? this.lang[message] : message;
    };

    Ext.Error.prototype = new Error();
    Ext.apply(Ext.Error.prototype, {
        // protected.  Extensions place their error-strings here.
        lang: {},

        name: 'Ext.Error',
        /**
         * getName
         * @return {String}
         */
        getName : function() {
            return this.name;
        },
        /**
         * getMessage
         * @return {String}
         */
        getMessage : function() {
            return this.message;
        },
        /**
         * toJson
         * @return {String}
         */
        toJson : function() {
            return Ext.encode(this);
        }
    });