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 相关文章推荐
jQuery使用ajaxSubmit()提交表单示例
Apr 04 Javascript
JavaScript DOM节点添加示例
Jul 16 Javascript
浏览器复制插件zeroclipboard使用指南
Mar 26 Javascript
js添加千分位的实现代码(超简单)
Aug 01 Javascript
自动适应iframe右边的高度
Dec 22 Javascript
jq给页面添加覆盖层遮罩的实例
Feb 16 Javascript
Vue自定义指令拖拽功能示例
Feb 17 Javascript
js中字符型和数值型数字的互相转化方法(必看)
Apr 25 Javascript
Vue组件的使用教程详解
Jan 05 Javascript
vue.js2.0点击获取自己的属性和jquery方法
Feb 23 jQuery
JQuery+Bootstrap 自定义全屏Loading插件的示例demo
Jul 03 jQuery
微信小程序如何连接Java后台
Aug 08 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
php中计算时间差的几种方法
2009/12/31 PHP
编译php 5.2.14+fpm+memcached(具体操作详解)
2013/06/18 PHP
php使用ffmpeg向视频中添加文字字幕的实现方法
2016/05/23 PHP
Laravel中unique和exists验证规则的优化详解
2018/01/28 PHP
Laravel使用原生sql语句并调用的方法
2019/10/09 PHP
鼠标放在图片上显示大图的JS代码
2013/03/26 Javascript
使用jquery写个更改表格行顺序的小功能
2014/04/29 Javascript
JS对象与json字符串格式转换实例
2014/10/28 Javascript
jQuery中index()方法用法实例
2014/12/27 Javascript
angular中使用路由和$location切换视图
2015/01/23 Javascript
探究JavaScript函数式编程的乐趣
2015/12/14 Javascript
Javascript基于AJAX回调函数传递参数实例分析
2015/12/15 Javascript
使用Function.apply()的参数数组化来提高 JavaScript程序性能的技巧
2015/12/23 Javascript
jQuery Validation Plugin验证插件手动验证
2016/01/26 Javascript
微信小程序 使用腾讯地图SDK详解及实现步骤
2017/02/28 Javascript
layui文件上传实现代码
2017/05/20 Javascript
vue+swiper实现组件化开发的实例代码
2017/10/26 Javascript
webpack里使用jquery.mCustomScrollbar插件的方法
2018/05/30 jQuery
vue2.0结合Element-ui实战案例
2019/03/06 Javascript
基于vue实现滚动条滚动到指定位置对应位置数字进行tween特效
2019/04/18 Javascript
修改NPM全局模式的默认安装路径的方法
2020/12/15 Javascript
Python设计实现的计算器功能完整实例
2017/08/18 Python
python处理csv中的空值方法
2018/06/22 Python
python实现狄克斯特拉算法
2019/01/17 Python
Python实现12306火车票抢票系统
2019/07/04 Python
python base64库给用户名或密码加密的流程
2020/01/02 Python
Python通过format函数格式化显示值
2020/10/17 Python
pycharm 使用anaconda为默认环境的操作
2021/02/05 Python
凯特王妃父母建立的派对用品网站:Party Pieces
2017/05/28 全球购物
韩国美国时尚服装和美容在线全球市场:KOODING
2018/11/07 全球购物
东芝官网商城:还原日式美学,打造美好生活
2018/12/27 全球购物
深圳茁壮笔试题
2015/05/28 面试题
校园主题婚礼活动策划方案
2014/09/15 职场文书
2014党员自我评议表范文
2014/09/20 职场文书
高中班主任寄语
2019/06/21 职场文书
Python捕获、播放和保存摄像头视频并提高视频清晰度和对比度
2022/04/14 Python