JavaScript - 错误与异常处理

你好啊,未来的JavaScript魔法师们!? 欢迎加入我们激动人心的JavaScript错误处理之旅。作为你亲切的计算机老师,我将在这次冒险中为你导航。那么,系好安全带,让我们跳进去吧!

JavaScript - Error Handling

错误是什么?

想象一下你正在烤蛋糕?,却不小心用了盐而不是糖。那就是错误!在编程中,错误也很类似——它们是代码运行时出现的意外问题。这些可能是拼写错误、逻辑错误,甚至是我们在处理的数据问题。

下面是一个JavaScript中的错误简单示例:

console.log(Hello, World!);

如果你运行这段代码,你会得到一个错误,因为我们忘了给文本加引号。JavaScript期望字符串被引号包围。

错误处理是什么?

错误处理就像是你在走钢丝时的安全网。它是我们代码中优雅地管理错误的一种方式,防止我们的整个程序在出问题时崩溃。

try...catch...finally 语句

try...catch...finally 语句是我们处理JavaScript中错误的主要工具。它就像是一组超级英雄来拯救一天!?‍♀️?‍♂️?‍♀️

下面是如何使用它:

try {
// 可能导致错误的代码
let result = 10 / 0;
console.log(result);
} catch (error) {
// 处理错误的代码
console.log("哎呀!发生了错误:", error.message);
} finally {
// 无论是否有错误都会运行的代码
console.log("这总是运行的!");
}

在这个例子中:

  • try 块包含可能导致错误的代码(除以零)。
  • 如果发生错误,catch 块会捕获并优雅地处理它。
  • finally 块总是运行,无论是否有错误。

throw 语句

有时,我们想创建自己的自定义错误。这时,throw 语句就派上用场了。就像是你在比赛中担任裁判并判罚犯规!?

下面是一个例子:

function checkAge(age) {
if (age < 0) {
throw new Error("年龄不能为负数!");
}
console.log("年龄有效:", age);
}

try {
checkAge(-5);
} catch (error) {
console.log("捕获到错误:", error.message);
}

在这段代码中,当有人尝试使用负数年龄时,我们抛出一个自定义错误。然后 catch 块处理这个错误。

onerror 事件处理程序属性

onerror 事件处理程序就像是你的整个JavaScript应用程序的守护者。它捕获代码中任何地方发生的错误。

下面是如何使用它:

window.onerror = function(message, source, lineno, colno, error) {
console.log("发生了错误:");
console.log("消息:", message);
console.log("来源:", source);
console.log("行号:", lineno);
console.log("列号:", colno);
console.log("错误对象:", error);
return true;
};

// 这将触发 onerror 处理程序
nonExistentFunction();

这段代码设置了一个全局错误处理程序,它将捕获应用程序中的任何未捕获错误。

JavaScript 错误对象参考

JavaScript 提供了几个内置的错误类型。让我们在下面的表格中看看它们:

错误类型 描述
Error 通用错误类型
SyntaxError 当代码中有语法错误时发生
ReferenceError 当引用不存在的变量时发生
TypeError 当值的类型不是预期类型时发生
RangeError 当数字超出允许范围时发生
URIError 当使用不正确的URI函数时发生
EvalError eval() 函数相关时发生

下面是一个这些错误可能发生的例子:

try {
// SyntaxError
eval("Hello World");

// ReferenceError
console.log(undefinedVariable);

// TypeError
null.f();

// RangeError
let arr = new Array(-1);

// URIError
decodeURIComponent("%");

} catch (error) {
console.log(error.name + ": " + error.message);
}

每一行代码都会抛出不同类型的错误,我们的 catch 块会处理它们。

那么,我亲爱的学生们,以上就是我们的JavaScript错误处理之旅。记住,错误不是你的敌人——它们是宝贵的反馈,帮助你改进代码。拥抱它们,从它们学习,很快你就能像专业人士一样处理错误了!?

继续编码,继续学习,别忘了在这个过程中享受乐趣!下次课程见!?

Credits: Image by storyset