JavaScript 保留错误原因的标准方法
在本文中,我们将尝试通过某些编码示例来理解JavaScript(或TypeScript)中保留错误原因的标准方法。
由于JavaScript/TypeScript没有直接提供这样的机制来查找错误的原因(例如,没有这样的属性或内置方法存在于两种语言中的任何一种),因此在连续抛出一些错误时,我们必须手动进行一些更改。
我们将通过下面的示例来理解我们的问题陈述。
示例1:
- 在此示例中,我们将创建一个函数,在该函数内部创建一个嵌套的try/catch块集。
- 然后,在嵌套的try块中抛出一个错误,然后通过catch语句捕获该抛出的错误。
- 然后,我们将抛出另一个错误,该错误将在外部try块后面的外部catch块中捕获。
JavaScript
<script>
let errorFunction = () => {
try {
try {
throw new Error(
"Second Error: Something went wrong..!!");
} catch (error2) {
console.log(error2);
throw new Error("First Error: Error 404!!...");
}
} catch (error1) {
console.log("-------------------------");
console.log(error1);
}
};
errorFunction();
</script>
输出:
现在,正如我们可以在浏览器控制台的输出中可视化的那样,第一个错误没有保留任何对第二个错误的引用,所以这实际上是我们的问题陈述,我们将在下面的另一个示例中解决这个问题。
示例2:
- 在这个示例中,我们将使用在前一个示例中实现的相同代码,但稍作修改。
- 在这里,我们将使用另一种类型的错误,即TrackError,尽管它已经定义,但为了代码实现的目的,我们将重新定义它。
- 在其中,我们将传递第二个错误的引用,这样稍后就可以通过catch语句来捕获第一个错误。
- 这就是我们如何保留错误的引用,并且在输出中我们也会看到一个名为ReferenceError的错误。
Javascript
<script>
let errorFunction = () => {
try {
try {
throw new Error(
"Second Error: Something went wrong..!!");
} catch (error2) {
console.log(error2);
throw new TrackError(
"First Error: Error 404!!...", error2);
}
} catch (error1) {
console.log("-------------------------");
console.log(error1);
}
};
errorFunction();
</script>
输出: