how do you throw a custom error class in Javascript?

exception, javascript, throw

Solution

Douglas Crockford recommends throwing errors like this:

throw{

    name: "SomeErrorName", 
    message: "This is the error message", 
    poo: "this is poo?"

}

And then you can easily say :

try {
    throw{

        name: "SomeErrorName", 
        message: "This is the error message", 
        poo: "this is poo?"

    }

}
catch(e){
    //prints "this is poo?"
    console.log(e.poo)
}

If you really want to use the MyError Function approach it should probably look like this :

function MyError(message){

    var message = message;
    var name = "MyError";
    var poo = "poo";

    return{

        message: message, 
        name: name, 
        poo: poo
    }

};

Problem

in JS, you can throw a "new Error(message)", but if you want to detect the type of the exception and do something different with the message, it is not so easy. This post: http://www.nczonline.net/blog/2009/03/10/the-art-of-throwing-javascript-errors-part-2/ Is saying you can do it something like this: ``` function MyError(message){ this.message=messsage; this.name="MyError"; this.poo="poo"; } MyError.prototype = new Error(); try{ alert("hello hal"); throw new MyError("wibble"); } catch (er) { alert (er.poo); // undefined. alert (er instanceof MyError); // false alert (er.name); // ReferenceError. } ``` But it does not work (get "undefined" and false) Is this even possible?

Original source