当前位置: 首页 > article >正文

js基础速成14-错误处理

错误处理

JavaScript 是一种弱类型语言。有时,当您尝试访问未定义的变量或调用未定义的函数等时,会出现运行时错误。

JavaScript 类似于 Python 或 Java,提供了一种错误处理机制,使用 try-catch-finally 块来捕捉运行时错误。

try {
  // 可能抛出错误的代码
} catch (err) {
  // 如果发生错误,将执行的代码
} finally {
  // 无论是否发生错误,都将执行的代码
}

try:将可能抛出错误的可疑代码包装在 try 块中。try 语句允许我们定义一段在执行时需要测试错误的代码块。

catch:在 catch 块中编写代码,当发生错误时执行。catch 块可以有参数,这些参数将提供错误信息。catch 块用于记录错误或向用户显示特定消息。

finally:finally 块将始终执行,无论是否发生错误。finally 块可用于完成剩余任务或重置在 try 块中可能已更改的变量。

示例:

try {
  let lastName = 'Yetayeh'
  let fullName = fistName + ' ' + lastName
} catch (err) {
  console.log(err)
}
ReferenceError: fistName is not defined
    at <anonymous>:4:20
try {
  let lastName = 'Yetayeh'
  let fullName = fistName + ' ' + lastName
} catch (err) {
  console.error(err) // 我们可以使用 console.log() 或 console.error()
} finally {
  console.log('无论如何我都会被执行')
}
ReferenceError: fistName is not defined
    at <anonymous>:4:20
无论如何我都会被执行

catch 块接受一个参数。通常会传递 e、err 或 error 作为 catch 块的参数。这个参数是一个对象,具有 name 和 message 键。让我们使用 name 和 message。

try {
  let lastName = 'Yetayeh'
  let fullName = fistName + ' ' + lastName
} catch (err) {
  console.log('错误名称', err.name)
  console.log('错误信息', err.message)
} finally {
  console.log('无论如何我都会被执行')
}
错误名称 ReferenceError
错误信息 fistName is not defined
无论如何我都会被执行

throw:throw 语句允许我们创建自定义错误。我们可以抛出字符串、数字、布尔值或对象。使用 throw 语句抛出异常。当您抛出异常时,表达式指定异常的值。以下每个都会抛出一个异常:

throw 'Error2' // 生成一个字符串值的异常
throw 42 // 生成一个值为 42 的异常
throw true // 生成一个值为 true 的异常
throw new Error('Required') // 生成一个消息为 "Required" 的错误对象
const throwErrorExampleFun = () => {
  let message
  let x = prompt('请输入一个数字: ')
  try {
    if (x == '') throw 'empty'
    if (isNaN(x)) throw 'not a number'
    x = Number(x)
    if (x < 5) throw 'too low'
    if (x > 10) throw 'too high'
  } catch (err) {
    console.log(err)
  }
}
throwErrorExampleFun()

错误类型

  • ReferenceError:发生非法引用时抛出。如果我们使用了未声明的变量,将抛出 ReferenceError。

    let firstName = 'Asabeneh'
    let fullName = firstName + ' ' + lastName
    console.log(fullName)
    
    Uncaught ReferenceError: lastName is not defined
        at <anonymous>:2:35
    
  • SyntaxError:发生语法错误时抛出。

    let square = 2 x 2
    console.log(square)
    console.log('Hello, world")
    
    Uncaught SyntaxError: Unexpected identifier
    
  • TypeError:发生类型错误时抛出。

    let num = 10
    console.log(num.toLowerCase())
    
    Uncaught TypeError: num.toLowerCase is not a function
        at <anonymous>:2:17
    

http://www.kler.cn/news/340943.html

相关文章:

  • 鸿蒙HarmonyOS中Image图片组件以及HarmonyOs图标库完全解析
  • 社工字典生成工具 —— CeWL 使用手册
  • RabbitMQ初识
  • JavaScript-API(倒计时的实现)
  • 【漏洞复现】宏景-HCM KhFieldTree Sql注入漏洞
  • MySQL 是否支持 XML
  • ISCC认证是什么?ISCC认证的申请流程有哪些注意事项?
  • VBA高级应用30例应用3Excel中的ListObject对象:选择表的一部分
  • 团标大数据(2024年09月)
  • PWR电源控制
  • R语言绘制柱状图
  • 深入理解AWS目标组运行状况
  • 刷题 双指针 滑动窗口
  • PHP支持回调函数的数组函数
  • house_of_muney
  • Hadoop服务端口号、Spark端口号、Hive端口号以及启动命令
  • 基于 Spring Boot + Quartz 实现定时任务持久化配置
  • 水下图像增强(论文复现)
  • Anaconda创建环境
  • 深度学习:循环神经网络—RNN的原理