URIError 对象用来表示以一种错误的方式使用全局URI处理函数而产生的错误。

语法

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

参数

message
选填。易于理解的错误描述。
fileName 【非标准内联】
选填。包含造成异常的代码的文件名称。
lineNumber 【非标准内联】
选填。造成异常的代码行号。

描述

当向全局 URI 处理函数传递一个不合法的URI时,URIError 错误会被抛出。

属性

URIError.prototype
允许向一个 URIError 对象添加额外的属性。

方法

虽然全局 URIError 对象没有任何自己的方法,但是它能通过原型链继承一些方法。

URIError 实例

属性

URIError.prototype.constructor
声明创建实例原型 (prototype) 的方法。
URIError.prototype.message
错误信息。虽然 ECMA-262 规范指出 URIError 应该提供其自己专属的 message 属性,但是在 SpiderMonkey 中,该属性继承自 Error.prototype.message
URIError.prototype.name
错误名称。继承自 Error
URIError.prototype.fileName
产生该错误的代码所在文件的路径。 继承自 Error
URIError.prototype.lineNumber
产生该错误的代码所在行的行号。继承自 Error
URIError.prototype.columnNumber
产生该错误的代码所在列的列号。 继承自 Error
URIError.prototype.stack
堆栈记录。继承自 Error

方法

虽然 URIError 的原型对象自身不包含任何方法,但是 URIError 的实例通过原型链(prototype chain)继承了一些方法。

示例

捕获一个 URIError 实例

try {
  decodeURIComponent('%');
} catch (e) {
  console.log(e instanceof URIError); // true
  console.log(e.message);             // "malformed URI sequence"
  console.log(e.name);                // "URIError"
  console.log(e.fileName);            // "Scratchpad/1"
  console.log(e.lineNumber);          // 2
  console.log(e.columnNumber);        // 2
  console.log(e.stack);               // "@Scratchpad/2:2:3\n"
}

创建一个 URIError 实例

try {
  throw new URIError('Hello', 'someFile.js', 10);
} catch (e) {
  console.log(e instanceof URIError); // true
  console.log(e.message);             // "Hello"
  console.log(e.name);                // "URIError"
  console.log(e.fileName);            // "someFile.js"
  console.log(e.lineNumber);          // 10
  console.log(e.columnNumber);        // 0
  console.log(e.stack);               // "@Scratchpad/2:2:9\n"
}

规范

规范 状态 注释
ECMAScript 3rd Edition (ECMA-262)
URIError
Standard 初始定义
ECMAScript 5.1 (ECMA-262)
URIError
Standard  
ECMAScript 2015 (6th Edition, ECMA-262)
URIError
Standard  
ECMAScript Latest Draft (ECMA-262)
URIError
Draft  

浏览器兼容

Update compatibility data on GitHub
DesktopMobileServer
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewChrome for AndroidEdge MobileFirefox for AndroidOpera for AndroidSafari on iOSSamsung InternetNode.js
URIErrorChrome Full support YesEdge Full support YesFirefox Full support 1IE Full support YesOpera Full support YesSafari Full support YesWebView Android Full support YesChrome Android Full support YesEdge Mobile Full support YesFirefox Android Full support 4Opera Android Full support YesSafari iOS Full support YesSamsung Internet Android Full support Yesnodejs Full support Yes

Legend

Full support  
Full support

参见