当前位置:首页 > 开发 > 编程语言 > 编程 > 正文

JS try.....catch的使用

发表于: 2010-06-02   作者:luedipiaofeng   来源:转载   浏览次数:
摘要: <script language="javascript"> try { throw new Error(10,"asdasdasd") } catch (e) { alert(e.message); alert(e.description) alert(e.number) alert(e.name) throw new E

<script language="javascript">
try
{
throw new Error(10,"asdasdasd")
}
catch (e)
{
alert(e.message);
alert(e.description)
alert(e.number)
alert(e.name)
throw new Error(10,"asdasdasd")
}

</script>  

在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()); // 使用本地格式显示当前时间
}

JS try.....catch的使用

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
doT js 宏的使用 <script id="serviceItemTemplate" type="text/x-dot-template"> {{##def.sp
doT js 宏的使用 <script id="serviceItemTemplate" type="text/x-dot-template"> {{##def.sp
doT js 宏的使用 <script id="serviceItemTemplate" type="text/x-dot-template"> {{##def.sp
doT js 宏的使用 <script id="serviceItemTemplate" type="text/x-dot-template"> {{##def.sp
下载JS-validation放到程序中 在程序中引入validation-framework.js文件,修改validation-framework
doT js 宏的使用 <script id="serviceItemTemplate" type="text/x-dot-template"> {{##def.sp
在我们前端开发的日常工作中,发现服务器上某个css/javascript文件有问题,需要修改,那真是家常便
使用jquery开发的打字练习网页小游戏,用到了js面向对象编程的一些基础知识。由于没有做难度控制等
作者:zccst jquery.mustache是用jQuery做了一层封装,提供了以下几个方法,让模板使用更便捷。 参考
Audits标签页 这个对于优化前端页面、加速网页加载速度很有用哦(相当与Yslow): 点击run按钮,就
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号