`
zpball
  • 浏览: 930876 次
  • 性别: 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端直接访问设备的摄像头功能。例如,在视频会议、在线教育、身份验证等领域,能够方便地调用...

    RangeException.md

    不同编程语言提供了各自的机制来处理RangeException问题。 以C#为例,在Unity中遇到数组访问超出范围的错误时,可以通过检查索引是否有效来避免抛出异常。通过if语句进行条件判断,确保索引在数组的有效范围内,...

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

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

    DOMException(解决方案).md

    为了有效解决JavaScript中的`DOMException`问题,开发者应该掌握适当的错误处理和代码调试技巧。这不仅能提高代码的质量,还能帮助开发者更好地理解和掌握JavaScript语言以及浏览器DOM API的行为。

    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 的子类,它们的异常...

Global site tag (gtag.js) - Google Analytics