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 相关文章推荐
学习ExtJS Panel常用方法
Oct 07 Javascript
JavaScript通过HTML的class来获取HTML元素的方法总结
May 24 Javascript
jQuery简单验证上传文件大小及类型的方法
Jun 02 Javascript
AngularJS基础 ng-src 指令简单示例
Aug 03 Javascript
Bootstrap CSS组件之下拉菜单(dropdown)
Dec 17 Javascript
使用jQuery监听扫码枪输入并禁止手动输入的实现方法(推荐)
Mar 21 jQuery
bootstrap栅格系统示例代码分享
May 22 Javascript
利用 spin.js 生成等待效果(js 等待效果)
Jun 25 Javascript
详解如何使用webpack+es6开发angular1.x
Aug 16 Javascript
深入浅出webpack之externals的使用
Dec 04 Javascript
javascript数据结构之多叉树经典操作示例【创建、添加、遍历、移除等】
Aug 01 Javascript
重学 JS:为啥 await 不能用在 forEach 中详解
Apr 15 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的五种设计模式
2012/09/05 PHP
基于PHP+jQuery+MySql实现红蓝(顶踩)投票代码
2015/08/25 PHP
yii2整合百度编辑器umeditor及umeditor图片上传问题的解决办法
2016/04/20 PHP
php实现当前页面点击下载文件的简单方法
2016/09/22 PHP
PHP用函数嵌入网站访问量计数器
2017/10/27 PHP
CodeIgniter框架钩子机制实现方法【hooks类】
2018/08/21 PHP
javascript之querySelector和querySelectorAll使用说明
2011/10/09 Javascript
JS时间选择器 兼容IE6,7,8,9
2012/06/26 Javascript
Javascript对象属性方法汇总
2013/11/21 Javascript
属于你的jQuery提示框(Tip)插件
2016/01/20 Javascript
Vue.js组件tree实现无限级树形菜单
2016/12/02 Javascript
JS遍历对象属性的方法示例
2017/01/10 Javascript
Angular 4依赖注入学习教程之ClassProvider的使用(三)
2017/06/04 Javascript
详解vue 模拟后台数据(加载本地json文件)调试
2017/08/25 Javascript
详解Webstorm 新建.vue文件支持高亮vue语法和es6语法
2017/10/26 Javascript
vue router使用query和params传参的使用和区别
2017/11/13 Javascript
JavaScript比较同一天的时间大小实例代码
2018/02/09 Javascript
浅谈Vue初学之props的驼峰命名
2018/07/19 Javascript
js实现上传按钮并显示缩略图小轮子
2020/05/04 Javascript
arcgis.js控制地图地体的显示范围超出区域自动弹回(实现思路)
2021/01/28 Javascript
pymongo实现控制mongodb中数字字段做加法的方法
2015/03/26 Python
Python抓取淘宝下拉框关键词的方法
2015/07/08 Python
Django中Forms的使用代码解析
2018/02/10 Python
python远程连接MySQL数据库
2019/04/19 Python
python 求某条线上特定x值或y值的点坐标方法
2019/07/09 Python
python3 常见解密加密算法实例分析【base64、MD5等】
2019/12/19 Python
详解python UDP 编程
2020/08/24 Python
CSS3田字格列表的样式编写方法
2018/11/22 HTML / CSS
html5 Canvas画图教程(3)—canvas出现1像素线条模糊不清的原因
2013/01/09 HTML / CSS
HTML5+CSS3绘制锯齿状的矩形
2016/03/01 HTML / CSS
文明礼仪小标兵事迹
2014/01/12 职场文书
《菜园里》教学反思
2014/04/17 职场文书
建筑工地大门标语
2014/06/18 职场文书
解除处分决定书
2015/06/25 职场文书
2016应届大学生自荐信模板
2016/01/28 职场文书
护士年终工作总结不会写?各科护士模板总结
2020/01/02 职场文书