ES6中异常处理的定义
异常: 异常是指不希望发生的事件,基本上会中断程序的正常流程。一般有两种类型的异常:同步异常(例如运行时错误)和异步异常(例如系统错误)。
- 同步异常(例如运行时错误)
- 异步异常(例如系统错误)
异常处理: 在程序中经常会发生异常,导致程序突然终止或以一种不友好的方式终止。处理或防止意外行为称为异常处理。异常处理处理同步异常,例如用户错误输入、不存在的文件等(包括运行时错误)。
为什么需要异常处理: 异常处理基本上确保程序不会突然终止,或者程序的流程不会以一种不友好的方式中断。可以进行有意义的错误报告,并为用户生成可理解的错误报告。
ES6: (ECMAScript第6版)提供了异常处理的重要功能。可以通过使用 try -块后跟 catch -块或 finally -块来实现。由于 try 块不能单独存在,它们要么后面跟着 catch 块,要么跟着 finally 块。它有三种形式:
- try…catch
- try…finally
- try…catch…finally
1. try…catch块: 代码或在 try 块中的 try 语句将首先执行。每当异常发生时,它会被放入 exception_var 中,然后继续执行 catch 块中的代码。
语法:
try {
// try statements
// code to run
} catch (exception_var) {
// catch statements
// code to run
}
2. try…finally块: 首先执行try语句块,然后执行finally语句块。 无论是否发生异常,finally块都将始终执行。
语法:
try {
// try statements
// code to run
} finally {
// finally statements
// code that is always executed
}
3. try…catch…finally 块: 如果发生异常,try
块将首先执行,异常的值将被放入 exception_var
中,然后执行 catch
块,最后执行 finally
块。然而,无论异常发生与否,finally
块都会被执行。
语法:
try {
// try statements
// code to run
} catch (exception_var) {
// catch statements
// code to run if exception occurs
} finally {
// finally statements
// code that is always executed
}
让我们通过以下示例来理解:
示例1: 让我们以一个用户输入错误的示例来说明,在这个示例中,用户将问题除以了零“0”。
javascript
<script>
var num = 5;
var de_num = 0;
try {
if(de_num == 0) {
throw "Divide by zero error";
} else {
var sol = num / de_num;
}
} catch(e) {
console.log("Error : " + e);
}
</script>
输出结果:
Error : Divide by zero error
示例2: 在这个示例中,我们使用了一个未声明的引用时会抛出引用错误。在这个示例中,我们故意没有声明函数并直接调用它,这将导致引用错误。
javascript
<script>
try{
ab();
// We have not declared the
// function ab anywhere
} catch(e){
console.log("Error : "+ e.name);
}
</script>
e.name将返回错误的名称。
输出:
Error : ReferenceError
示例3: 在我们的最后一个示例中,我们故意编写了一个语法错误来尝试阻塞。我们没有正确地将字符串放在单引号之间。这将导致SyntaxError。
JavaScript
<script>
try {
eval("alert('ES6 Exception Handling)");
} catch(e){
console.log("Error : " + e.name)
}
</script>
输出: :
Error : SyntaxError