JavaScript 错误和异常

错误(Error)一般是在代码运行前出现的。在运行程序之前,JavaScript 解释器会先对代码进行检查,如果代码有误,例如某些语法错误,浏览器就会报出相应的错误,只有将错误修正后,代码才能运行。JavaScript 中支持以下几种错误类型:

异常(Exception)(也被称为运行时错误),是在代码运行中出现的,例如调用未定义的方法、读取不存在的文件等,在出现异常之前,代码的运行并不受影响,当出现异常时,会在浏览器控制台输出错误信息,并终止程序的运行。

异常处理( try catch 语句)

异常处理的目的是捕捉产生异常的代码,使整个程序不会因为异常而终止运行。可以使用 try catch 语句,try(检测异常),catch(处理异常)。语法格式如下:

我们可以将任何可能发生异常的代码放到 try 语句块中,并在 catch 语句块中定义处理异常的方法。如果 try 语句块中的代码发生错误,代码会立即从 try 语句块跳转到 catch 语句块中,如果 try 语句块中代码没有发生错误,就会忽略 catch 语句块中的代码。

try(检测异常)

  • 在try块中抛出异常才能被检测,从而进一步捕获处理。
  • try检测到异常后,会跳过下面的语句,跳转到对应的catch语句。
  • 如果当前函数没有用try块(和catch)捕获异常或catch没有捕获到该异常,则系统继续将该异常抛给调用它的函数!直到遇到一个能捕获此异常的函数或OS。即没有处理异常的函数遇到异常相当于执行了再次抛出功能(执行throw语句)
  • 当 try 语句块中的代码出现异常时,会创建并抛出一个 Error 对象(例如上面代码内catch(error)中的 error),对象中包含两个属性 name:错误的类型;message:对错误的描述信息。

catch(处理异常)

  • 一个类可以抛出多个异常,一个try块也可以对应多个catch语句,但最多只执行一个catch语句(不需要break)。顺序检测到匹配的第1个catch语句并执行,然后自动跳过后面的所有catch语句。
  • catch(…) 可以接收所有类型的异常。
  • 当catch块捕获的异常类型与try块中抛出的异常类型不同时,该catch块将不会被执行,因此也就不会捕获到异常!
  • 有时处理程序在捕获到一个异常对象之后,仍不知道如何处理,为此它要把这个异常对象再次抛出,希望其他函数能更好地处理它。
  • 基类的catch语句也将匹配从该基类派生的任何类。因此,如果想捕获基类类型和派生类类型的异常,则应在catch序列中将派生类置于前面,否则将永远执行不到,编译器会给出警告。

异常嵌套

  • 异常可以嵌套,也就是在catch语句处理异常时,catch语句内部还可以再嵌套catch语句。不过这种嵌套形式过于复杂,难于理解,并不建议使用。

try catch finally 语句

在 try catch 语句的后面,还可以添加一个 finally 语句块,无论 try 语句块中的代码是否发生错误,finally 语句中的代码都会执行。

手动抛出异常(thow语句)

JavaScript 中,可以依赖 JavaScript 解析器来自动抛出错误(try语句块会自动抛出异常),还可以手动抛出异常,需要使用 throw 语句,其中 expression 为要抛出的异常,可以是任何类型的值,例如对象、字符串、数组等,推荐使用对象类型。

  • 20
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

rinba_murphy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值