主题
错误处理
JavaScript 是一种松散类型的语言。有时当你尝试访问未定义的变量或调用未定义的函数等时,会遇到运行时错误。
JavaScript 类似于 Python 或 Java,提供了一种错误处理机制,使用 try-catch-finally 块来捕获运行时错误。
js
try {
// 可能抛出错误的代码
} catch (err) {
// 发生错误时要执行的代码
} finally {
// 无论是否发生错误都会执行的代码
}
try: 将可能抛出错误的可疑代码包装在 try 块中。try 语句允许我们定义一个代码块,在执行时测试错误。
catch: 当发生错误时,在 catch 块中编写代码来处理。catch 块可以有参数,这些参数会给你错误信息。catch 块用于记录错误或向用户显示特定消息。
finally: finally 块无论是否发生错误都会被执行。finally 块可以用来完成剩余的任务或重置在 try 块中发生错误之前可能已更改的变量。
示例:
js
try {
let lastName = 'Yetayeh'
let fullName = fistName + ' ' + lastName
} catch (err) {
console.log(err)
}
sh
ReferenceError: fistName is not defined
at <anonymous>:4:20
js
try {
let lastName = 'Yetayeh'
let fullName = fistName + ' ' + lastName
} catch (err) {
console.error(err) // 我们可以使用 console.log() 或 console.error()
} finally {
console.log('无论如何我都会被执行')
}
sh
ReferenceError: fistName is not defined
at <anonymous>:4:20
无论如何我都会被执行
catch 块接受一个参数。通常将 e、err 或 error 作为参数传递给 catch 块。这个参数是一个对象,它有 name 和 message 键。让我们使用 name 和 message。
js
try {
let lastName = 'Yetayeh'
let fullName = fistName + ' ' + lastName
} catch (err) {
console.log('错误名称', err.name)
console.log('错误消息', err.message)
} finally {
console.log('无论如何我都会被执行')
}
sh
错误名称 ReferenceError
错误消息 fistName is not defined
无论如何我都会被执行
throw: throw 语句允许我们创建自定义错误。我们可以抛出字符串、数字、布尔值或对象。使用 throw 语句抛出异常。当你抛出异常时,表达式指定异常的值。以下每个都会抛出异常:
js
throw 'Error2' // 生成一个字符串值的异常
throw 42 // 生成一个值为 42 的异常
throw true // 生成一个值为 true 的异常
throw new Error('Required') // 生成一个消息为 Required 的错误对象
js
const throwErrorExampleFun = () => {
let message
let x = prompt('输入一个数字: ')
try {
if (x == '') throw '空值'
if (isNaN(x)) throw '不是数字'
x = Number(x)
if (x < 5) throw '太小'
if (x > 10) throw '太大'
} catch (err) {
console.log(err)
}
}
throwErrorExampleFun()
错误类型
- ReferenceError: 发生了非法引用。如果我们使用未声明的变量,会抛出 ReferenceError。
js
let firstName = 'Asabeneh'
let fullName = firstName + ' ' + lastName
console.log(fullName)
sh
Uncaught ReferenceError: lastName is not defined
at <anonymous>:2:35
- SyntaxError: 发生了语法错误
js
let square = 2 x 2
console.log(square)
console.log('Hello, world")
sh
Uncaught SyntaxError: Unexpected identifier
- TypeError: 发生了类型错误
js
let num = 10
console.log(num.toLowerCase())
sh
Uncaught TypeError: num.toLowerCase is not a function
at <anonymous>:2:17
这些是你在编写代码时可能遇到的一些常见错误。理解错误可以帮助你知道犯了什么错误,并帮助你快速调试代码。
🌕 你是完美的。现在,你知道如何处理错误,可以编写处理意外用户输入的健壮应用程序。你刚刚完成了第14天的挑战,在通往伟大的道路上又前进了14步。现在做一些练习来锻炼你的大脑和肌肉。
练习
练习:第1级
练习
练习:第2级
练习
练习:第3级
练习
🎉 恭喜!🎉