📜  js 中用户定义的异常 - Javascript (1)

📅  最后修改于: 2023-12-03 15:32:22.154000             🧑  作者: Mango

Js中用户定义的异常

在JavaScript中,内置了一些异常,如TypeError、ReferenceError等,但是有时候我们需要根据自己的业务逻辑处理特定的异常。此时,用户定义的异常就派上用场了。

什么是用户定义的异常?

用户定义的异常就是开发者自己定义,用于处理特定场景下的错误信息的异常。可以通过抛出异常并捕获相应的错误处理程序来实现。

如何定义一个用户定义的异常?

定义用户定义的异常很简单,只需要继承JavaScript内置的Error对象即可。以下是一个简单的例子:

class MyError extends Error {
  constructor(message) {
    super(message);
    this.name = "MyError";
  }
}

上述代码中,我们创建了一个名为MyError的异常类,并继承了JavaScript内置的Error对象。在构造函数中,我们调用了父类的构造函数,并设置了该异常的名称为"MyError"。

我们也可以添加一些自定义的属性和方法,以便更好地处理错误。例如:

class MyError extends Error {
  constructor(message, number) {
    super(message);
    this.name = "MyError";
    this.code = number;
  }
  
  getErrorMessage() {
    return `Error ${this.code} - ${this.message}`;
  }
}

在上述代码中,我们添加了一个名为code的属性,并在构造函数中接收了一个数字值。我们还添加了一个getErrorMessage方法来获取异常的详细错误信息。在抛出异常后,我们可以通过该方法返回特定错误信息。

如何抛出用户定义的异常?

在JavaScript中,我们可以使用throw语句抛出特定的异常。例如,在上面的MyError类中,我们可以这样抛出异常:

throw new MyError("Something went wrong.", 500);

上述代码中,我们创建了一个名为MyError的异常,并传递了错误消息和错误代码。然后使用throw语句抛出该异常。在抛出异常后,JavaScript暂停执行当前函数,并在调用堆栈中查找异常处理程序。

如何捕获用户定义的异常?

与JavaScript内置的异常一样,我们可以使用try...catch语句捕获用户定义的异常。例如:

try {
  // some code that may throw MyError
} catch (e) {
  if (e instanceof MyError) {
    console.log(e.getErrorMessage());
  } else {
    console.log("Unknown error occurred.");
  }
}

在上述代码中,我们使用try包装可能抛出异常的代码块。当MyError异常被抛出时,我们捕获并输出错误信息。

总结

用户定义的异常允许开发者更好地控制错误处理逻辑,并为应用程序提供更好的可读性和可维护性。尽管它们不是必需的,但用户定义的异常可以是一个非常有用的工具,可以帮助我们在JavaScript应用程序中处理错误。