这是我参与8月更文挑战的第31天,活动详情查看:8月更文挑战”
-
当执行 JavaScript 代码时,会发生各种错误。
-
错误可能是程序员的编码错误,由错误输入引起的错误,或者由于其他不可预见的问题
-
try 语句使您能够测试代码块中的错误
-
catch 语句允许您处理错误
-
finally 使您能够执行代码,在 try 和 catch 之后,无论结果如何
-
throw 语句允许您创建自定义错误
try 和 catch
try 语句允许您定义一个代码块,以便在执行时检测错误
catch 语句允许你定义一个要执行的代码块,如果 try 代码块中发生错误
JavaScript 语句 try 和 catch 成对出现:
try { 供测试的代码块 } catch(err) { 处理错误的代码块 }
finally 语句
finally 语句允许您在 try 和 catch 之后执行代码,无论结果:
try { 供测试的代码块 } catch(err) { 处理错误的代码块 } finally { 无论 try / catch 结果如何都执行的代码块 }
<!DOCTYPE html>
<html>
<body>
<p>请输入 5 到 10 之间的数字:</p>
<input id="demo" type="text">
<button type="button" onclick="myFunction()">检测输入</button>
<p id="p01"></p>
<script>
function myFunction() {
var message, x;
message = document.getElementById("p01");
message.innerHTML = "";
x = document.getElementById("demo").value;
try {
if (x == "") throw "是空的";
if (isNaN(x)) throw "不是数字";
x = Number(x);
if (x > 10) throw "太大";
if (x < 5) throw "太小";
} catch (err) {
message.innerHTML = "输入:" + err;
} finally {
document.getElementById("demo").value = "";
}
}
</script>
</body>
</html>
throw 语句
throw 语句允许您创建自定义错误
从技术上讲您能够抛出异常(抛出错误)
异常可以是 JavaScript 字符串、数字、布尔或对象:
throw "Too big"; // 抛出文本
throw 500; //抛出数字
如果把 throw 与 try 和 catch 一同使用,就可以控制程序流并生成自定义错误消息
<!DOCTYPE html>
<html>
<body>
<p>请输入 5 到 10 之间的数字:</p>
<input id="demo" type="text">
<button type="button" onclick="myFunction()">检测输入</button>
<p id="p01"></p>
<script>
function myFunction() {
var message, x;
message = document.getElementById("p01");
message.innerHTML = "";
x = document.getElementById("demo").value;
try {
if (x == "") throw "是空的";
if (isNaN(x)) throw "不是数字";
x = Number(x);
if (x < 5) throw "太小";
if (x > 10) throw "太大";
} catch (err) {
message.innerHTML = "输入:" + err;
}
}
</script>
</body>
</html>
Error 对象
JavaScript 拥有当错误发生时提供错误信息的内置 error 对象
error 对象提供两个有用的属性:name 和 message
Error 对象属性
| 属性 | 描述 |
|---|---|
| name | 设置或返回错误名 |
| message | 设置或返回错误消息(一条字符串) |
Error Name Values
error 的 name 属性可返回六个不同的值:
| 错误名 | 描述 |
|---|---|
| EvalError | 已在 eval() 函数中发生的错误 |
| RangeError | 已发生超出数字范围的错误 |
| ReferenceError | 已发生非法引用 |
| SyntaxError | 已发生语法错误 |
| TypeError | 已发生类型错误 |
| URIError | 在 encodeURI() 中已发生的错误 |