¿Cuál es la diferencia entre `throw new Error` y` throw someObject`?

Quiero escribir un controlador de errores común que detecte errores personalizados lanzados a propósito en cualquier instancia del código.

Cuando lo hicethrow new Error('sample') como en el siguiente código

try {
    throw new Error({'hehe':'haha'});
    // throw new Error('hehe');
} catch(e) {
    alert(e);
    console.log(e);
}

Log se muestra en Firefox comoError: [object Object] y no pude analizar el objeto.

Para el segundothrow el registro se muestra como:Error: hehe

Mientras que cuando hice

try {
    throw ({'hehe':'haha'});
} catch(e) {
    alert(e);
    console.log(e);
}

la consola se mostró como:Object { hehe="haha"} en el que pude acceder a las propiedades de error.

¿Cuál es la diferencia

¿Es la diferencia como se ve en el código? La cadena similar se pasará como cadena y el objeto como objetos, pero la sintaxis será diferente.

No he explorado el objeto de error de lanzamiento ... Solo había hecho tirar cadenas.

¿Hay alguna otra manera que los dos métodos mencionados anteriormente?

Respuestas a la pregunta(10)

Su respuesta a la pregunta