Cómo registrar excepciones en JavaScript

Como desarrollador de C #, estoy acostumbrado al siguiente estilo de manejo de excepciones:

try
{
    throw SomeException("hahahaha!");
}
catch (Exception ex)
{
    Log(ex.ToString());
}

Output
------

SomeNamespace.SomeException: hahahaha!
    at ConsoleApplication1.Main() in ConsoleApplication1\Program.cs:line 27

Es realmente simple y, sin embargo, me dice todo lo que necesito saber acerca de cuál fue la excepción y dónde estaba.

¿Cómo puedo lograr lo equivalente en JavaScript donde el objeto de excepción en sí mismo podría ser solo una cadena? Realmente quiero poder saber la línea exacta de código donde ocurrió la excepción, sin embargo, el siguiente código no registra nada útil en absoluto:

try
{
    var WshShell = new ActiveXObject("WScript.Shell");
    return WshShell.RegRead("HKEY_LOCAL_MACHINE\\Some\\Invalid\\Location");
}
catch (ex)
{
    Log("Caught exception: " + ex);
}

Output
------

Caught exception: [object Error]

EDITAR (nuevamente): Solo para aclarar, esto es para una aplicación interna que hace un uso intensivo de JavaScript. Estoy buscando una forma de extraer información útil de los errores de JavaScript que pueden quedar atrapados en el sistema de producción. Ya tengo un mecanismo de registro, solo quiero una forma de obtener una cadena sensible para iniciar sesión.

Respuestas a la pregunta(6)

Su respuesta a la pregunta