Module Ext_Error


module Ext_Error: sig .. end
A wrapper class for the native JavaScript Error ob ...

A wrapper class for the native JavaScript Error object that adds a few useful capabilities for handling errors in an Ext application. When you use Ext.Error to raise an error from within any class that uses the Ext 4 class system, the Error class can automatically add the source class and method from which the error was raised. It also includes logic to automatically log the error to the console, if available, with additional metadata about the error. In all cases, the error will always be thrown at the end so that execution will halt.

Ext.Error also offers a global error handling method that can be overridden in order to handle application-wide errors in a single spot. You can optionally ignore errors altogether, although in a real application it's usually a better idea to override the handling function and perform logging or some other method of reporting the errors in a way that is meaningful to the application.

At its simplest you can simply raise an error as a simple string from within any code:

Example usage:

Ext.Error.raise('Something bad happened!');

If raised from plain JavaScript code, the error will be logged to the console (if available) and the message displayed. In most cases however you'll be raising errors from within a class, and it may often be useful to add additional metadata about the error being raised. The raise method can also take a config object. In this form the msg attribute becomes the error description, and any other data added to the config gets added to the error object and, if the console is available, logged to the console for inspection.

Example usage:

Ext.define('Ext.Foo', {
    doSomething: function(option){
        if (someCondition === false) {
            Ext.Error.raise({
                msg: 'You cannot do that!',
                option: option,   // whatever was passed into the method
                'error code': 100 // other arbitrary info
            });
        }
    }
});

If a console is available (that supports the console.dir function) you'll see console output like:

An error was raised with the following data:
option:         Object { foo: "bar"}
    foo:        "bar"
error code:     100
msg:            "You cannot do that!"
sourceClass:   "Ext.Foo"
sourceMethod:  "doSomething"

uncaught exception: You cannot do that!

As you can see, the error will report exactly where it was raised and will include as much information as the raising code can usefully provide.

If you want to handle all application errors globally you can simply override the static handle method and provide whatever handling logic you need. If the method returns true then the error is considered handled and will not be thrown to the browser. If anything but true is returned then the error will be thrown normally.

Example usage:

Ext.Error.handle = function(err) {
    if (err.someProperty == 'NotReallyAnError') {
        // maybe log something to the application here if applicable
        return true;
    }
    // any non-true return value (including none) will cause the error to be thrown
}


class type t = object .. end
class type configs = object .. end
class type events = object .. end
class type statics = object .. end
val get_static : unit -> statics Js.t
Static instance for lazy-loaded modules.
val static : statics Js.t
Static instance.
val handle : 'a Js.t -> unit
See method statics.handle
val _raise : 'a Js.t -> unit
See method statics._raise
val of_configs : configs Js.t -> t Js.t
of_configs c casts a config object c to an instance of class t
val to_configs : t Js.t -> configs Js.t
to_configs o casts instance o of class t to a config object