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 相关文章推荐
js parseInt(&quot;08&quot;)未指定进位制问题
Jun 19 Javascript
jQuery操作表格(table)的常用方法、技巧汇总
Apr 12 Javascript
javascript解决IE6下hover问题的方法
Jul 28 Javascript
js+canvas绘制矩形的方法
Jan 28 Javascript
jQuery 自定义下拉框(DropDown)附源码下载
Jul 22 Javascript
Javascript中的 “&amp;” 和 “|” 详解
Feb 02 Javascript
ThinkPHP+jquery实现“加载更多”功能代码
Mar 11 Javascript
Vue2递归组件实现树形菜单
Apr 10 Javascript
详解前端路由实现与react-router使用姿势
Aug 07 Javascript
JavaScript深拷贝和浅拷贝概念与用法实例分析
Jun 07 Javascript
es6基础学习之解构赋值
Dec 10 Javascript
vue watch监控对象的简单方法示例
Jan 07 Vue.js
在线一元二次方程计算器实例(方程计算器在线计算)
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
解析htaccess伪静态的规则
2013/06/18 PHP
php生成唯一数字id的方法汇总
2015/11/18 PHP
PHP创建/删除/复制文件夹、文件
2016/05/03 PHP
PHP上传Excel文件导入数据到MySQL数据库示例
2016/10/25 PHP
Thinkphp框架使用list_to_tree 实现无限级分类列出所有节点示例
2020/04/04 PHP
jquery Mobile入门—多页面切换示例学习
2013/01/08 Javascript
js与applet相互调用的方法
2016/06/22 Javascript
select隐藏选中值对应的id,显示其它id的简单实现方法
2016/08/25 Javascript
微信小程序 详解Page中data数据操作和函数调用
2017/01/12 Javascript
Javascript中的 “&amp;” 和 “|” 详解
2017/02/02 Javascript
用 js 的 selection range 操作选择区域内容和图片
2017/04/18 Javascript
Node.js连接mongodb实例代码
2017/06/06 Javascript
对Angular中单向数据流的深入理解
2018/03/31 Javascript
el-input 标签中密码的显示和隐藏功能的实例代码
2019/07/19 Javascript
layui 实现表单和文件上传一起传到后台的例子
2019/09/16 Javascript
vue+element tabs选项卡分页效果
2020/06/29 Javascript
Vue data的数据响应式到底是如何实现的
2020/02/11 Javascript
Vue中使用better-scroll实现轮播图组件
2020/03/07 Javascript
vue-cli3项目配置eslint代码规范的完整步骤
2020/09/10 Javascript
python实现博客文章爬虫示例
2014/02/26 Python
python 查找字符串是否存在实例详解
2017/01/20 Python
Python使用wget实现下载网络文件功能示例
2018/05/31 Python
在Python中使用gRPC的方法示例
2018/08/08 Python
python 2.7.13 安装配置方法图文教程
2018/09/18 Python
pandas 快速处理 date_time 日期格式方法
2018/11/12 Python
python实现windows壁纸定期更换功能
2019/01/21 Python
Python编程学习之如何判断3个数的大小
2019/08/07 Python
Python延迟绑定问题原理及解决方案
2020/08/04 Python
Python制作简单的剪刀石头布游戏
2020/12/10 Python
Spartoo西班牙官网:法国时尚购物网站
2018/03/27 全球购物
如何查看在weblogic中已经发布的EJB
2012/06/01 面试题
英文求职信写作小建议
2014/02/16 职场文书
区政府领导班子个人对照检查材料
2014/09/25 职场文书
党的群众路线教育实践活动党员个人剖析材料
2014/10/08 职场文书
Python移位密码、仿射变换解密实例代码
2021/06/27 Python
WebWorker 封装 JavaScript 沙箱详情
2021/11/02 Javascript