Wyrzucanie niestandardowych wyjątków w Javascript. Jakiego stylu użyć?

Douglas Crockford zaleca zrobienie czegoś takiego:

throw {
    name: "System Error",
    message: "Something horrible happened."
};

Ale możesz też zrobić coś takiego:

function IllegalArgumentException(message) {
    this.message = message;
}

throw new IllegalArgumentException("Argument cannot be less than zero");

a potem:

try {
    //some code that generates exceptions
} catch(e) {    
    if(e instanceof IllegalArgumentException) {
        //handle this
    } else if(e instanceof SomeOtherTypeOfException) {
        //handle this
    }
}

Myślę, że mógłbyś dołączyćtype właściwość w implementacji Crockforda, a następnie zbadanie tego zamiast robieniainstanceof. Czy jest jakaś korzyść z robienia jednego kontra drugiego?

questionAnswers(2)

yourAnswerToTheQuestion