JS错误处理与调试操作实例分析


Posted in Javascript onApril 13, 2020

本文实例讲述了JS错误处理与调试操作。分享给大家供大家参考,具体如下:

JavaScript 错误 - throw、try 和 catch

try 语句测试代码块的错误。

catch 语句处理错误。

throw 语句创建自定义错误。

finally 语句在 try 和 catch 语句之后,无论是否有触发异常,该语句都会执行。

JavaScript try 和 catch

try 语句允许我们定义在执行时进行错误测试的代码块。

catch 语句允许我们定义当 try 代码块发生错误时,所执行的代码块。

JavaScript 语句 try 和 catch 是成对出现的。

语法

try { 
  ... //异常的抛出 
} catch(e) {
   ... //异常的捕获与处理 
} finally { 
  ... //结束处理 }

例:

var txt=""; 
function message() 
{ 
  try { 
    adddlert("Welcome guest!"); 
  } catch(err) { 
    txt="本页有一个错误。\n\n"; 
    txt+="错误描述:" + err.message + "\n\n"; 
    txt+="点击确定继续。\n\n"; 
    alert(txt); 
  } 
}

finally 语句

finally 语句不论之前的 try 和 catch 中是否产生异常都会执行该代码块。

<input id="demo" type="text">
<button type="button" οnclick="myFunction()">点我</button>
<p id="p01"></p>
<script>
function myFunction() {
 var message, x;
 message = document.getElementById("p01");
 message.innerHTML = "";
 x = document.getElementById("demo").value;
 try { 
  if(x == "") throw "值是空的";
  if(isNaN(x)) throw "值不是一个数字";
  x = Number(x);
  if(x > 10) throw "太大";
  if(x < 5) throw "太小";
 }
 catch(err) {
  message.innerHTML = "错误: " + err + ".";
 }
 finally {
  document.getElementById("demo").value = "";
 }
}
</script>

Throw 语句

throw 语句允许我们创建自定义错误。

正确的技术术语是:创建或抛出异常(exception)。

如果把 throw 与 try 和 catch 一起使用,那么您能够控制程序流,并生成自定义的错误消息。

语法

throw exception

异常可以是 JavaScript 字符串、数字、逻辑值或对象。

实例

本例检测输入变量的值。如果值是错误的,会抛出一个异常(错误)。catch 会捕捉到这个错误,并显示一段自定义的错误消息:

function myFunction() {
  var message, x;
  message = document.getElementById("message");
  message.innerHTML = "";
  x = document.getElementById("demo").value;
  try { 
    if(x == "") throw "值为空";
    if(isNaN(x)) throw "不是数字";
    x = Number(x);
    if(x < 5)  throw "太小";
    if(x > 10)  throw "太大";
  }
  catch(err) {
    message.innerHTML = "错误: " + err;
  }
}

JavaScript 调试工具

在程序代码中寻找错误叫做代码调试。

调试很难,但幸运的是,很多浏览器都内置了调试工具。

内置的调试工具可以开始或关闭,严重的错误信息会发送给用户。

有了调试工具,我们就可以设置断点 (代码停止执行的位置), 且可以在代码执行时检测变量。

浏览器启用调试工具一般是按下 F12 键,并在调试菜单中选择 "Console" 。

console.log() 方法

如果浏览器支持调试,你可以使用 console.log() 方法在调试窗口上打印 JavaScript 值:

实例

a = 5;
b = 6;
c = a + b;
console.log(c);

设置断点

在调试窗口中,你可以设置 JavaScript 代码的断点。

在每个断点上,都会停止执行 JavaScript 代码,以便于我们检查 JavaScript 变量的值。

在检查完毕后,可以重新执行代码(如播放按钮)。

debugger 关键字

debugger 关键字用于停止执行 JavaScript,并调用调试函数。

这个关键字与在调试工具中设置断点的效果是一样的。

如果没有调试可用,debugger 语句将无法工作。

开启 debugger ,代码在第三行前停止执行。

实例

var x = 15 * 5; 
debugger; 
document.getElementbyId("demo").innerHTML = x;

感兴趣的朋友可以使用在线HTML/CSS/JavaScript代码运行工具:http://tools.3water.com/code/HtmlJsRun测试上述代码运行效果。

希望本文所述对大家JavaScript程序设计有所帮助。

Javascript 相关文章推荐
JQuery 实现的页面滚动时浮动窗口控件
Jul 10 Javascript
JS 参数传递的实际应用代码分析
Sep 13 Javascript
非阻塞动态加载javascript广告实现代码
Nov 17 Javascript
通过一段代码简单说js中的this的使用
Jul 23 Javascript
Angular的事件和表单详解
Dec 26 Javascript
javaScript嗅探执行神器-sniffer.js
Feb 14 Javascript
浅谈js-FCC算法Friendly Date Ranges(详解)
Apr 10 Javascript
js+SVG实现动态时钟效果
Jul 14 Javascript
利用React Router4实现的服务端直出渲染(SSR)
Jan 07 Javascript
Vue作用域插槽实现方法及作用详解
Jul 08 Javascript
vue自定义组件(通过Vue.use()来使用)即install的用法说明
Aug 11 Javascript
JavaScript实现滑块验证解锁
Jan 07 Javascript
JS正则表达式常见函数与用法小结
Apr 13 #Javascript
javascript设计模式 ? 桥接模式原理与应用实例分析
Apr 13 #Javascript
javascript设计模式 ? 适配器模式原理与应用实例分析
Apr 13 #Javascript
JavaScript创建表格的方法
Apr 13 #Javascript
JavaScript实现捕获鼠标坐标
Apr 12 #Javascript
jquery实现轮播图特效
Apr 12 #jQuery
用jQuery实现抽奖程序
Apr 12 #jQuery
You might like
PHP类相关知识点实例总结
2016/09/28 PHP
Document 对象的常用方法
2009/07/31 Javascript
不同的jQuery API来处理不同的浏览器事件
2012/12/09 Javascript
javascript间隔刷新的简单实例
2013/11/14 Javascript
js实现图片旋转的三种方法
2014/04/10 Javascript
jQuery根据ID获取input、checkbox、radio、select的示例
2014/08/11 Javascript
js 右侧浮动层效果实现代码(跟随滚动)
2015/11/22 Javascript
JS表格组件神器bootstrap table详解(强化版)
2016/05/26 Javascript
JavaScript数组操作函数汇总
2016/08/05 Javascript
Node.js开启Https的实践详解
2016/10/25 Javascript
详解jQuery中的DOM操作
2016/12/23 Javascript
微信小程序页面滑动屏幕加载数据效果
2020/11/16 Javascript
详解Vue.js项目API、Router配置拆分实践
2018/03/16 Javascript
关于HTML5的data-*自定义属性的总结
2018/05/05 Javascript
微信小程序实现的3d轮播图效果示例【基于swiper组件】
2018/12/11 Javascript
layer父页获取弹出层输入框里面的值方法
2019/09/02 Javascript
[04:19]完美世界携手游戏风云打造 卡尔工作室模型介绍篇
2013/04/24 DOTA
pyqt5自定义信号实例解析
2018/01/31 Python
对numpy和pandas中数组的合并和拆分详解
2018/04/11 Python
python中yaml配置文件模块的使用详解
2018/04/27 Python
解决.ui文件生成的.py文件运行不出现界面的方法
2019/06/19 Python
tensor和numpy的互相转换的实现示例
2019/08/02 Python
Python datetime包函数简单介绍
2019/08/28 Python
django实现将后台model对象转换成json对象并传递给前端jquery
2020/03/16 Python
Python使用Selenium实现淘宝抢单的流程分析
2020/06/23 Python
python删除指定列或多列单个或多个内容实例
2020/06/28 Python
Python私有属性私有方法应用实例解析
2020/09/15 Python
翻新二手苹果产品的网络领导者:Mac of all Trades
2017/12/19 全球购物
澳大利亚最好的电动自行车:Leon Cycle
2020/12/19 全球购物
校庆标语集锦
2014/06/25 职场文书
房屋买卖授权委托书
2014/09/27 职场文书
2016特色励志班级口号
2015/12/24 职场文书
Nginx tp3.2.3 404问题解决方案
2021/03/31 Servers
Pytorch 如何加速Dataloader提升数据读取速度
2021/05/28 Python
springBoot基于webSocket实现扫码登录
2021/06/22 Java/Android
JS class语法糖的深入剖析
2022/07/07 Javascript