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

js Exception处理

阅读更多
javascript同java一样,都有异常处理机制。在javascript中,也是用try...catch来进行异常处理。例如:

try {   
     fo.bar();   
} catch (e) {   
     alert(e.name + ": " + e.message);   
}  
try {
 fo.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("异常信息");

每当产生运行时错误,就产生 Error 对象的一个实例以描述错误。该实例有两个固有属性保存错误的描述(description 属性)和错误号(number 属性)。


Error 对象也可以用如上所示方法显式创建,或用 throw 语句抛掉。在两种情况下,都可以添加选择的任何属性,以拓展 Error 对象的能力。


手工抛出异常的方法如下:


try {
 throw new Error("Whoops!");
} catch (e) {
 alert(e.name + ": " + e.message);alert(e.name + ": " + e.description);//IE中两者结果一样,都是Whoops!
}

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


try {   
     fo.bar();   
} catch (e) {   
    if (e instanceof EvalError) {   
         alert(e.name + ":" + e.message);   
     }   
    else if (e instanceof RangeError) {   
         alert(e.name + ": " + e.message);   
     }   
    // etc   
}  
try {
 fo.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 {   
     fo.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");           
     }   
}  
try {
 fo.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());  // 使用本地格式显示当前时间   
} 

分享到:
评论

相关推荐

    Uncaught DOMException:

    标题“Uncaught DOMException:”通常出现在JavaScript编程中,它是一个错误类型,表示在文档对象模型(DOM)操作过程中遇到了无法处理的异常。这个错误通常意味着尝试访问或修改了一个不存在或者不可用的DOM元素,这...

    Exception

    压缩包内的文件“JS正则表达式大全 - oneJavaer - BlogJava.mht”表明博客内容可能还涉及到JavaScript(JS)的正则表达式。正则表达式是用于匹配字符串模式的一种强大工具,常用于数据验证、文本提取和替换等任务。...

    JavaScript异常处理

    JavaScript异常处理是编程中至关重要的一个环节,它用于管理和修复代码执行过程中可能出现的错误或异常情况。异常处理机制使得程序能够在遇到错误时不会立即终止,而是有机会进行适当的恢复或者给出反馈,增强了程序...

    JavaScript错误与异常处理

    JavaScript错误与异常处理是编程实践中不可或缺的部分,尤其是在JavaScript这样的脚本语言中,错误处理显得尤为重要。JavaScript中的错误分为两种主要类型:语法错误和运行错误。语法错误,也称为错误(Error),是...

    【JavaScript源代码】js实现调用网络摄像头及常见错误处理.docx

    ### JavaScript 实现调用网络摄像头及其常见错误处理 #### 前言 随着Web技术的发展,越来越多的应用场景需要实现在Web端直接访问设备的摄像头功能。例如,在视频会议、在线教育、身份验证等领域,能够方便地调用...

    Node.js-在Electron应用中捕获未处理的错误和promiserejections

    因此,我们不仅要处理浏览器中的 JavaScript 错误,还要关注 Node.js 进程中的错误。未捕获的异常可能导致应用崩溃,而未处理的 Promise rejections 也会导致类似的问题。 1. **错误事件监听**: 在 Node.js 中,...

    Memory_and_Exception_Trace.zip_exception_memory_trace

    "Memory_and_Exception_Trace.zip_exception_memory_trace"这个压缩包可能包含了一个程序,该程序专注于这两个主题,即内存管理和异常处理。下面我们将深入探讨这两个核心概念。 内存管理是指在计算机程序中有效地...

    Java中Error与Exception的区别.doc

    3. 处理级别:Exception 应该在应用程序级被处理,而 Error 应该在系统级被捕捉。 在 Java 中,定义了两类异常:Checked exception 和 Unchecked exception。 Checked exception 是 Exception 的子类,它们的异常...

    解决JS传递中文乱码问题

    本文将深入探讨如何解决JavaScript(简称JS)在传递中文字符时出现的乱码问题,并提供具体的解决方案。 #### 一、问题背景 在Web应用中,前端页面与后端服务之间通过HTTP请求进行数据交互是非常常见的操作。当这些...

    QT中使用QScriptEngine引擎编译运行JavaScript脚本

    如果脚本抛出异常,可以通过`QScriptEngine::hasUncaughtException()`和`QScriptEngine::uncaughtException()`检查并处理。 **清理资源** 当不再需要使用QScriptEngine时,记得释放资源。在QT中,通常会在析构函数...

Global site tag (gtag.js) - Google Analytics