mozilla
您的搜索结果

    Error

    这篇翻译不完整。请帮忙从英语翻译这篇文章

    概述

    创建一个error对象。当发生运行时异常时,其实例会被抛出.Error对象可作为用户自定义异常的基对象.下面是关于标准内置error类型的说明.

    语法

    new Error([message[, fileName[,
    lineNumber]]])

    参数

    message
    可(供人)阅读的错误描述信息。
    fileName 
    创建Error对象的fileName属性的值。默认是包含异常代码的文件名。
    lineNumber 
    创建Error对象的lineNumber属性的值。默认是构造Error对象的行数。

    描述

    当代码运行时的发生错误,会创建新的Error对象,并将其抛出。

    该页面描述了Error对象自身的使用,以及其构造函数的使用. 关于Error实例的内部属性和方法,请看 Error.prototype.

    Error 类型

    除了通用的Error构造函数外,JavaScript还有6个其他类型的错误构造函数。更多客户端异常,详见 Exception Handling Statements

    EvalError
    创建一个error实例,表示错误的原因:与 eval() 有关。
    InternalError
    创建一个代表Javascript引擎内部错误的异常抛出的实例. 如: "递归太多".
    RangeError
    创建一个error实例,表示错误的原因:数值变量或参数超出其有效范围
    ReferenceError
    创建一个error实例,表示错误的原因:无效引用。
    SyntaxError
    创建一个error实例,表示错误的原因:eval()在解析代码的过程中发生的语法错误
    TypeError
    创建一个error实例,表示错误的原因:变量或参数不属于有效类型。
    URIError
    创建一个error实例,表示错误的原因:给 encodeURI()或  decodeURl()传递的参数无效。

    属性

    Error.prototype
    允许添加属性到Error实例.

    方法

    全局Error对象自身不包含任何方法,但从原型链中继承了一些方法.

    Error 实例

    All Error instances and instances of non-generic errors inherit from Error.prototype. As with all constructor functions, you can use the prototype of the constructor to add properties or methods to all instances created with that constructor.

    Properties

    Standard properties

    Error.prototype.constructor
    Specifies the function that created an instance's prototype.
    Error.prototype.message
    Error message.
    Error.prototype.name
    Error name.

    Vendor-specific extensions

    Non-standard
    This feature is non-standard and is not on a standards track. Do not use it on production sites facing the Web: it will not work for every user. There may also be large incompatibilities between implementations and the behavior may change in the future.

    Microsoft

    Error.prototype.description
    Error description. Similar to message.
    Error.prototype.number
    Error number.

    Mozilla

    Error.prototype.fileName
    Path to file that raised this error.
    Error.prototype.lineNumber
    Line number in file that raised this error.
    Error.prototype.columnNumber
    Column number in line that raised this error.
    Error.prototype.stack
    Stack trace.

    Methods

    Error.prototype.toSource()
    Returns a string containing the source of the specified Error object; you can use this value to create a new object. Overrides the Object.prototype.toSource() method.
    Error.prototype.toString()
    Returns a string representing the specified object. Overrides the Object.prototype.toString() method.

    例子

    例1: 抛出一个基本 error

    Usually you create an Error object with the intention of raising it using the throw keyword. 可以使用 try...catch 构造处理异常:

    try {
        throw new Error("Whoops!");
    } catch (e) {
        alert(e.name + ": " + e.message);
    }
    

    例2: 处理一个特定 error

    this should probably be removed可以仅仅通过指定的异常类型来处理异常,即使用异常的constructor 属性来测试;当使用现代Javascript引擎时,可使用instanceof 关键字:

    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的异常类型,同时在异常处理中该异常类型能够抛出 new MyError() 并可以使用 instanceof MyError 来检测异常的种类. 这种需求的通用解决方法如下.

    Note that the thrown MyError will report incorrect lineNumber and fileName at least in Firefox.

    参考 "What's a good way to extend Error in JavaScript?" discussion on Stackoverflow.

    // Create a new object, that prototypally inherits from the Error constructor.
    function MyError(message) {
      this.name = 'MyError';
      this.message = message || 'Default Message';
    }
    MyError.prototype = Object.create(Error.prototype);
    MyError.prototype.constructor = MyError;
    
    try {
      throw new MyError();
    } catch (e) {
      console.log(e.name);     // 'MyError'
      console.log(e.message);  // 'Default Message'
    }
    
    try {
      throw new MyError('custom message');
    } catch (e) {
      console.log(e.name);     // 'MyError'
      console.log(e.message);  // 'custom message'
    }
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     

    规范

    Specification Status Comment
    ECMAScript 1st Edition. Standard Initial definition. Implemented in JavaScript 1.1.
    ECMAScript 5.1 (ECMA-262)
    Error
    Standard  
    ECMAScript 6 (ECMA-262)
    Error
    Release Candidate  

    浏览器兼容性

    Feature Chrome Firefox (Gecko) Internet Explorer Opera Safari
    Basic support (Yes) (Yes) (Yes) (Yes) (Yes)
    Feature Android Chrome for Android Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
    Basic support (Yes) (Yes) (Yes) (Yes) (Yes) (Yes)

    相关链接

    文档标签和贡献者

    此页面的贡献者有: evilpie, teoli, yenshen, Maple-Jan
    最后编辑者: teoli,