博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JS异常捕获和抛出
阅读量:5369 次
发布时间:2019-06-15

本文共 897 字,大约阅读时间需要 2 分钟。

 try...catch 用来异常捕获(主要适用于IE5以上内核的浏览器,也是最常用的异常捕获方式)

使用onerror时间捕获异常,这种捕获方式是比较古老的一中方式,目前一些主流的浏览器暂不支持这种

捕获方式。

 

捕获异常的语法如下:

try {

  //运行代码

} catch(err) {

  //处理错误

}

测试示例代码如下,abc是一个未定义的函数,会抛出异常,异常信息会被try catch,进入catch语句中执行

var msg = "";try{  abc();}catch(err){  console.log(err)  console.log(err.message);}

如果把try  catch 去掉的话 ,会出现什么情况呢?

 

 

控制台报错了 ,而且后续中断没有执行,因为添加的日志打印信息没有执行,。针对

这种没有捕获的异常,会异常中断程序,页面上没有合理的提示信息,用户会莫名其妙

体验非常不好。

 

以上是针对try catch的使用方法的描述,还有一种情况就是,需要自定义一个异常然后抛出,

比如某个条件不符合或是值为空的情况,需要抛出异常,提示用户,暂停后续程序的执行,

这种情况就需要throw一个exception

var num = "a";try {  if(num==" ")    throw   "值为空";  //刚才这个地方的分号写成中文状态下的分号,结果出出错了  if(isNaN(num))  throw    "不是数字";}catch(err){  alert("错误信息:"+err);}

刷新浏览器,看看throw出来的异常提示信息,就是我们定义的错误信息“不是数字”,

因为num的值为a,判断为空的语句通过,判断是否数字的语句抛出异常

 

通过上面的例子可以发现,异常场景都在我们的控制范围之内,

不会出现什么未知和突然中断程序的异常

 

 通过上面有异常捕获和没有异常捕获的情况对比来看,

没有捕获处理异常的情况,非常不友好,程序也缺少健壮性

 

转载于:https://www.cnblogs.com/agansj/p/9194156.html

你可能感兴趣的文章
使用DBCP连接池对连接进行管理
查看>>
【洛谷】【堆+模拟】P2278 操作系统
查看>>
hdu3307 欧拉函数
查看>>
Spring Bean InitializingBean和DisposableBean实例
查看>>
[容斥][dp][快速幂] Jzoj P5862 孤独
查看>>
Java基础之字符串匹配大全
查看>>
面向对象
查看>>
lintcode83- Single Number II- midium
查看>>
[工具] Sublime Text 使用指南
查看>>
Web服务器的原理
查看>>
#10015 灯泡(无向图连通性+二分)
查看>>
HAL层三类函数及其作用
查看>>
web@h,c小总结
查看>>
Data Structure 基本概念
查看>>
[搬运] 写给 C# 开发人员的函数式编程
查看>>
core--线程池
查看>>
他山之石:加载图片的一个小问题
查看>>
shell - 常识
查看>>
Spring Cloud Stream消费失败后的处理策略(三):使用DLQ队列(RabbitMQ)
查看>>
PKUWC2018 5/6
查看>>