JavaScript中的内部错误(例外)

bur*_*t11 8 javascript error-handling

在JavaScript中抛出异常时,是否有一种首选方法可以包含内部异常?

我对来自C#背景的JavaScript相对较新.在C#中,您可以执行以下操作:

try 
{
  // Do stuff
}
catch (Exception ex)
{
  throw new Exception("This is a more detailed message.", ex);
}
Run Code Online (Sandbox Code Playgroud)

在我在JavaScript中看到的示例中,我无法找到如何捕获异常,添加新消息并在仍然传递原始异常的同时重新抛出新异常.

小智 5

你可以抛出你想要的任何物体:

try {
    var x = 1/0; 
}
catch (e) {
    throw new MyException("There is no joy in Mudville", e);
}

function MyException(text, internal_exception) {
    this.text = text;
    this.internal_exception = internal_exception;
}
Run Code Online (Sandbox Code Playgroud)

然后将MyException使用属性text和类型抛出错误internal_exception.

  • 不过,抛出 _any_ 对象是一个坏主意,因为(据我所知)只有 `Error` 类型可以用来在第一次抛出时正确地获取 `stack`/`stackTrace` 。因此,不要使用“function MyException”,而是使用“class MyError extends Error”。 (3认同)