`
kuyuyingzi
  • 浏览: 54410 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

js 的try catch应用

 
阅读更多

<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()); // 使用本地格式显示当前时间 
}
分享到:
评论

相关推荐

    javascript 中的try catch应用总结

    javascript 中的try catch应用总结 实例代码: [removed] try { throw new Error(10,"asdasdasd") } catch (e) { alert&#40;e.message&#41;; alert&#40;e.description&#41; alert&#40;e.number&#41; alert&#40;e....

    atry:基于Node.JS域模块的异步try-catch

    atry - 异步尝试基于 Node.JS 域模块的异步 try-catch。 注意:明智地使用,异步异常可能会导致资源泄漏,应用程序接口atry(runningFunction, [arg1, [arg2, ...]]) .catch(errorHandler) - 捕获同步和异步异常 atry...

    W3C JavaScript 高级教程.rar

    JS Try...Catch JS Throw JS onerror JS 特殊字符 JS 指导方针 JavaScript 对象 JS 对象简介 JS 字符串 JS 日期 JS 数组 JS 逻辑 JS 算数 JS RegExp JS HTML DOM JavaScript 高级 ...

    babel-plugin-better-async-await:Babel插件可使用异步await更好地处理错误

    编写更好的async await并避免try catch语句如果使用以下预设则此插件可以很好。 :light_bulb: 对于与CRA以及任何依赖@ babel / env或依赖于预设和插件的应用程序一起使用,我们强烈建议使用 注意:如果使用的是...

    javascript完全学习手册1 源码

    13.3.3 使用try...catch语句处理 异常 377 13.3.4 Error对象 379 13.3.5 使用throw语句 380 13.4 JavaScript调试技巧 381 13.4.1 使用alert()语句 382 13.4.2 使用write()语句 382 13.4.3 抛出自定义异常消息 383 ...

    IE10 Error.stack 让脚本调试更加方便快捷

    JavaScript 中的结构化错误处理依赖于 throw 和 try/catch,开发人员将在其中声明一个错误,并将控制流传递至处理错误的程序的某一部分。当某一错误被引发时,Chakra,即 Internet Explorer 中的 JavaScript 引擎将...

    javascript完全学习手册2 源码

    13.3.3 使用trycatch语句处理异常 13.3.4 Error对象 13.3.5 使用throw语句 13.4 JavaScript调试技法 13.4.1 使用alen()语句 13.4.2 使用write()语句 13.4.3 抛出自定义异常消息 第4篇 JaVflscript特效...

    【JavaScript源代码】React 错误边界组件的处理.docx

     这是React16的内容,并不是最新的技术,但是用很少被讨论,直到通过文档发现其实也是很有用的一部分内容,还是总结一下~ React中的未捕获的 JS 错误会导致整个应用的崩溃,和整个组件树的卸载。从 React16 开始...

    mineral.js:浏览器中的另一个Lisp

    自述文件 Mineral.js是浏览器中的另一个Lisp,它是在阅读Paul Graham撰写的“ ... trycatch (包装JS的try-catch) while (由于JavaScript缺乏尾部调用优化功能) 句法糖 lambda函数: (% arg1 arg2 ... argN . s-exp

    AJAX应用的通用流程

    根据 Internet Explorer 中安装的 JavaScript 技术版本不同,MSXML 实际上有两种不同的版本,因此必须对这两种情况分别编写代码。请参阅 清单 3,其中的代码在 Microsoft 浏览器上创建了一个 XMLHttpRequest。 清单...

    JavaScript完全自学宝典 源代码

    示例描述:演示JavaScript的简单应用及JavaScript特效。 1.1.html 用JavaScript开发的弹出式“Hello World”实例。 1.2.html 在页面中输出的“Hello World”。 1.3.html 使用JavaScript进行文本框值的...

    Node.js MongoDB AngularJSWeb开发中文版.part1

    2.10.1 try/catch块 30 2.10.2 抛出你自己的错误 31 2.10.3 使用finally 31 2.11 小结 32 2.12 下一章 32 第2部分 学习Node.js 第3章 开始使用Node.js 35 3.1 了解Node.js 35 3.1.1 谁在使用Node.js 35 3.1.2 Node....

    Exceptionless.JavaScript:Exceptional JavaScript客户端

    Exceptionless.js在浏览器或Node.js中为您JavaScript应用程序提供实时错误报告。 它将收集到的信息组织成简单的可操作数据,这些数据将帮助您的应用程序变得异常异常! 给我看看代码! &lt; script src =" ...

    精通JS脚本之ExtJS框架.part1.rar

    1.4.7 try catch finally语句 1.4.8 其他语句 第2章 JavaScript浏览器对象模型与事件处理 2.1 浏览器对象模型 2.1.1 文档对象 2.1.2 表单及其元素对象 2.1.3 浏览器信息对象 2.1.4 窗口对象 2.1.5 网址对象 ...

    精通JS脚本之ExtJS框架.part2.rar

    1.4.7 try catch finally语句 1.4.8 其他语句 第2章 JavaScript浏览器对象模型与事件处理 2.1 浏览器对象模型 2.1.1 文档对象 2.1.2 表单及其元素对象 2.1.3 浏览器信息对象 2.1.4 窗口对象 2.1.5 网址对象 ...

    编写可维护的JavaScript(中文)

    10.5 try-catch语句 10.6 错误类型 第11章 不是你的对象不要动 11.1 什么是你的 11.2 原则 11.2.1 不覆盖方法 11.2.2 不新增方法 11.2.3 不删除方法 11.3 更好的途径 11.3.1 基于对象的继承 11.3.2 基于...

    safe-result:成功或失败的价值

    安全结果 错误处理是软件开发中... 真的是各地诉诸没有办法try / catch在Javascript,所以你将不得不使用try / catch在你自己的“低级”的代码。 原料药 您可以通过默认导入来导入模块 import Result from 'safe-resul

    jsp 用内置对象编写的留言板

    try { Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();//装载驱动 String url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=test";//建立连接字符串 Connection ...

    java用线程两种方式

    * 分别使用Runnable接口和Thread类编程实 编写一应用程序创建两个线程一个线程打印输出1—1000之间所有的奇数(Odd Number) * 另外一个线程打印输出1-1000之间所有的偶数(Even Number)要求两个线程随机休眠一 段...

Global site tag (gtag.js) - Google Analytics