JS中的异常处理方法分享


Posted in Javascript onDecember 22, 2013

js容错语句,就是js出错也不提示错误(防止浏览器右下角有个黄色的三角符号,要不用户体验不好)

window.onerror=function(){return true;}

下面是为了获取js异常信息,方便开发者找回问题

1,try...catch...

<script type="text/javascript">
var txt=""
function message()
{
try
   {
   adddlert("Welcome guest!")
   }
catch(err)
   {
     txt="本页中存在错误。\n\n"
     txt+="点击“确定”继续查看本页,\n"
     txt+="点击“取消”返回首页。\n\n"
     if(!confirm(txt))
         {
         document.location.href="/index.html"
         }
   }
}
</script>

2 ,throw

<script type="text/javascript">
var x=prompt("请输入 0 至 10 之间的数:","")
try
{
if(x>10)
  throw "Err1"
else if(x<0)
  throw "Err2"
else if(isNaN(x))
  throw "Err3"
}
catch(er)
{
if(er=="Err1")
  alert("错误!该值太大!")
if(er == "Err2")
  alert("错误!该值太小!")
if(er == "Err3")
  alert("错误!该值不是数字!")
}
</script>

3,onerror:

<script type="text/javascript">
onerror=handleErr
var txt=""
function handleErr(msg,url,l)
{
txt="本页中存在错误。\n\n"
txt+="错误:" + msg + "\n"
txt+="URL: " + url + "\n"
txt+="行:" + l + "\n\n"
txt+="点击“确定”继续。\n\n"
alert(txt)
return true
}
function message()
{
adddlert("Welcome guest!")
}
</script>

js中的异常处理

在JavaScript可以使用try...catch来进行异常处理。例如:  

try { foo.bar();} catch (e) { alert(e.name + ": " + e.message);}
目前我们可能得到的系统异常主要包含以下6种:

EvalError: raised when an error occurs executing code in eval() 
RangeError: raised when a numeric variable or parameter is outside of its valid range 
ReferenceError: raised when de-referencing an invalid reference 
SyntaxError: raised when a syntax error occurs while parsing code in eval() 
TypeError: raised when a variable or parameter is not a valid type 
URIError: raised when encodeURI() or decodeURI() are passed invalid parameters 
上面的六种异常对象都继承自Error对象。他们都支持以下两种构造方法:

new Error();new Error("异常信息");
手工抛出异常的方法如下:

try { 
throw new Error("Whoops!");}
catch (e) { 
alert(e.name + ": " + e.message);}

如要判断异常信息的类型,可在catch中进行判断:

try {
foo.bar();
} catch (e) { 
if (e instanceof EvalError) {  
alert(e.name + ":" + e.message); 
}  else if (e instanceof RangeError) {
alert(e.name + ": " + e.message); }  
// etc 
}

Error具有下面一些主要属性:

description: 错误描述 (仅IE可用). 
fileName: 出错的文件名 (仅Mozilla可用). 
lineNumber: 出错的行数 (仅Mozilla可用). 
message: 错误信息 (在IE下同description) 
name: 错误类型. 
number: 错误代码 (仅IE可用). 
stack: 像Java中的Stack Trace一样的错误堆栈信息 (仅Mozilla可用). 
因此为了更好的了解错误信息我们可以将catch部分改为如下形式:  
 

try {
    foo.bar();
} catch(e) {
    if (browserType != BROWSER_IE) {
        alert("name: " + e.name + "message: " + e.message + "lineNumber: " + e.lineNumber + "fileName: " + e.fileName + "stack: " + e.stack);
    } else {
        alert("name: " + e.name + "errorNumber: " + (e.number & 0xFFFF) + "message: " + e.message ");         } } "

JavaScript中的throw命令事实上可以抛出任何对象,并且我们可以在catch接受到此对象。例如:

try {
    throw new Date(); // 抛出当前时间对象 } catch (e) { alert(e.toLocaleString()); // 使用本地格式显示当前时间
    }
Javascript 相关文章推荐
常用参考资料(手册)下载或者链接
Jul 22 Javascript
jQuery EasyUI中对表格进行编辑的实现代码
Jun 10 Javascript
js 判断上传文件大小及格式代码
Nov 13 Javascript
点击button获取text内容并改变样式的js实现
Sep 09 Javascript
jQuery弹出层插件Lightbox_me使用指南
Apr 21 Javascript
javascript将DOM节点添加到文档的方法实例分析
Aug 04 Javascript
js实现Select列表内容自动滚动效果代码
Aug 20 Javascript
学习javascript面向对象 掌握创建对象的9种方式
Jan 04 Javascript
JavaScript小技巧整理篇(非常全)
Jan 26 Javascript
纯css下拉菜单 无需js
Aug 15 Javascript
JS实现秒杀倒计时特效
Jan 02 Javascript
React实现阿里云OSS上传文件的示例
Aug 10 Javascript
在线一元二次方程计算器实例(方程计算器在线计算)
Dec 22 #Javascript
判断文件是否正在被使用的JS代码
Dec 21 #Javascript
jquery鼠标停止移动事件
Dec 21 #Javascript
JS delegate与live浅析
Dec 21 #Javascript
jQuery中delegate与on的用法与区别示例介绍
Dec 20 #Javascript
jquery数组之存放checkbox全选值示例代码
Dec 20 #Javascript
jquery如何通过name名称获取当前name的value值
Dec 20 #Javascript
You might like
解决dede生成静态页和动态页转换的一些问题,及火车采集入库生成动态的办法
2007/03/29 PHP
深入php list()函数的详解
2013/06/05 PHP
WordPress后台中实现图片上传功能的实例讲解
2016/01/11 PHP
Zend Framework基本页面布局分析
2016/03/19 PHP
Zend Framework教程之Zend_Db_Table用法详解
2016/03/21 PHP
总结PHP代码规范、流程规范、git规范
2018/06/18 PHP
PHP使用观察者模式处理异常信息的方法详解
2019/09/24 PHP
基于PHP实现用户在线状态检测
2020/11/10 PHP
node.js中的console.time方法使用说明
2014/12/09 Javascript
浅谈JavaScript正则表达式分组匹配
2015/04/10 Javascript
JQuery实现动态添加删除评论的方法
2015/05/18 Javascript
简介JavaScript中search()方法的使用
2015/06/06 Javascript
yarn与npm的命令行小结
2016/10/20 Javascript
JavaScript两个变量交换值的实现方法
2017/03/01 Javascript
微信小程序 向左滑动删除功能的实现
2017/03/10 Javascript
Vue制作Todo List网页
2017/04/26 Javascript
input file样式修改以及图片预览删除功能详细概括(推荐)
2017/08/17 Javascript
详解angular笔记路由之angular-router
2017/09/12 Javascript
vue动态绑定class选中当前列表变色的方法示例
2018/12/19 Javascript
Vue自定义指令写法与个人理解
2019/02/09 Javascript
[09:37]DOTA2卡尔工作室 英雄介绍圣堂刺客篇
2013/06/13 DOTA
[01:15:15]VG VS EG Supermajor小组赛B组胜者组第一轮 BO3第二场 6.2
2018/06/03 DOTA
python操作mongodb根据_id查询数据的实现方法
2015/05/20 Python
Django实现图片文字同时提交的方法
2015/05/26 Python
python获取网络图片方法及整理过程详解
2019/12/20 Python
使用python实现时间序列白噪声检验方式
2020/06/03 Python
CSS实现圆形放大镜狙击镜效果 只有圆圈里的放大
2012/12/10 HTML / CSS
css3类选择器之结合元素选择器和多类选择器用法
2017/03/09 HTML / CSS
Lentiamo荷兰:在线订购隐形眼镜、隐形眼镜液和太阳镜
2019/10/25 全球购物
抽象类和接口的区别
2012/09/19 面试题
Python面试题集
2012/03/08 面试题
师范大学毕业自我鉴定
2013/11/21 职场文书
2014年派出所工作总结
2014/11/21 职场文书
2015年人力资源工作总结
2015/04/08 职场文书
保留意见审计报告
2015/06/05 职场文书
Windows Server 2012 R2服务器安装与配置的完整步骤
2022/07/15 Servers