日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

JS对象类型Error错误对象

發(fā)布時(shí)間:2023/12/31 综合教程 49 生活家
生活随笔 收集整理的這篇文章主要介紹了 JS对象类型Error错误对象 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

error對象是JavaScript的原生對象,當(dāng)程序解析和運(yùn)行過程中發(fā)生了錯(cuò)誤,JS引擎就會自動產(chǎn)生并拋出一個(gè)error對象的實(shí)例,并且程序會終止在錯(cuò)誤發(fā)生的地方。

ECMA-262規(guī)定error對象包含message和name兩個(gè)屬性,message屬性保存錯(cuò)誤信息,name屬性保存錯(cuò)誤類型。

可以使用error()構(gòu)造函數(shù)創(chuàng)建錯(cuò)誤對象,對象接收一個(gè)參數(shù)用來表示錯(cuò)誤信息,error對象會把它作為message屬性的值;如果沒有參數(shù),它將使用一個(gè)預(yù)定義的默認(rèn)字符串作為屬性值

new Error()
new Error('錯(cuò)誤消息')

// 可以省略new操作符
Error()
Error('錯(cuò)誤消息')

// 通常使用throw語句來拋出錯(cuò)誤
throw Error('錯(cuò)誤消息')
throw Error()

error對象有一個(gè)toString()方法。返回'Error' + message屬性值

error類型

ECMA-262定義了下列7種錯(cuò)誤類型:

Error()     // 基類型
EvalError()  // eval錯(cuò)誤
RangeError() // 范圍錯(cuò)誤
ReferenceError() // 引用錯(cuò)誤
SyntaxError() // 語法錯(cuò)誤
TypeError()  // 類型錯(cuò)誤
URIError() // URI錯(cuò)誤

Error是基類型,其他錯(cuò)誤類型都繼承自該類型,可以利用它拋出自定義錯(cuò)誤。

EvalError()

eval()函數(shù)執(zhí)行出錯(cuò)時(shí)會拋出EvalError錯(cuò)誤,該類型在ES5中已不再出現(xiàn),為了向后兼容所以保留了下來。

RangeError()

當(dāng)數(shù)值超出范圍時(shí)會拋出RangeError范圍錯(cuò)誤。

new Array(-1) // Uncaught RangeError: Invalid array length

ReferenceError()

引用不存在的變量或左值時(shí)會拋出ReferenceError引用錯(cuò)誤

a; // a is not defined
i++; // Uncaught ReferenceError: Invalid left-hand side expression in postfix operation

SyntaxError()

當(dāng)語法不符合規(guī)則時(shí)會拋出SyntaxError語法錯(cuò)誤

var 1bar = 1; // SyntaxError: Invalid or unexpected token

TypeError()

執(zhí)行某些操作時(shí),類型不符合要求會導(dǎo)致TypeError類型錯(cuò)誤

null.toString() // Uncaught TypeError: Cannot read property 'toString' of null

URIError()

URI相關(guān)函數(shù)的參數(shù)不正確時(shí)會發(fā)生URIError錯(cuò)誤

decodeURI('%2') // Uncaught URIError: URI malformed

error事件

任何沒有通過try-catch處理的錯(cuò)誤都會觸發(fā)window對象的error事件。error事件接收五個(gè)參數(shù):

message:錯(cuò)誤信息(字符串)
source:發(fā)生錯(cuò)誤的腳本URL(字符串)
lineno:發(fā)生錯(cuò)誤的行號(數(shù)字)
colno:發(fā)生錯(cuò)誤的列號(數(shù)字)
error:Error對象(對象)
// 示例1 DOM0級
window.onerror = function(message, source, lineno){
   console.log(message, source, lineno)
}
a

// 示例2 DOM2級
window.addEventListener('error', function(event){
    console.log(event.message, event.source, event.lineno)
});
a

圖像也支持error事件,當(dāng)圖像src屬性的url不能返回可以識別的圖像格式時(shí),就會觸發(fā)error事件。error事件發(fā)生時(shí)圖片下載已結(jié)束。

var img = new Image()
img.src='a.jpg'
img.onerror = function(e) {
  console.log(e)
}

throw語句

throw語句用于拋出錯(cuò)誤,后面必須指定一個(gè)值用來表示錯(cuò)誤信息,值的類型沒有要求。

throw 'hello world';

throw new Error('something bad happened');

throw new SyntaxError('I don\'t like your syntax.');
throw new TypeError('what type of variable do you take me for?');
throw new RangeError('sorry,you just don\'t have the range.');
throw new EvalError('That doesn\'t evaluate.');
throw new URIError('URI, is that you?');
throw new ReferenceError('you didn\'t cite your references properly');

可以利用原型鏈繼承Error對象創(chuàng)建自定義錯(cuò)誤。

function CustomError(message) {
	this.name = 'CustomError'
	this.message = message
}

CustomError.prototype = new Error()
throw new CustomError('custom error')

try catch語句

try-catch語句用于捕獲和處理JavaScript中的異常,try從句定義了可能出現(xiàn)異常的代碼塊,catch從句定義當(dāng)try從句拋出異常時(shí)執(zhí)行的代碼。try從句中的任何代碼拋出異常,都會導(dǎo)致代碼終止執(zhí)行,然后執(zhí)行catch中的代碼。catch從句后面還可以跟finally從句,用于放置清理代碼。無論try從句是否拋出錯(cuò)誤,finally從句中的代碼都會執(zhí)行。catch和finally都是可選的,但是try從句至少要和其中一個(gè)組合成完整的語句。

try {
  // 這里可能會產(chǎn)生錯(cuò)誤,可能是程序錯(cuò)誤,可能是throw語句拋出的錯(cuò)誤
}catch(e) {
  // 當(dāng)try中拋出錯(cuò)誤時(shí)這里才執(zhí)行,變量e包含了錯(cuò)誤信息
  // 可以根據(jù)錯(cuò)誤類型處理錯(cuò)誤,也可以再次拋出錯(cuò)誤
}finally{
  // 無論try是否拋出異常,這里代碼正常執(zhí)行。即使try中出現(xiàn)return語句。
}
function fn() {
  try {
    console.log(0);
    throw 'bug';
  } catch(e) {
    console.log(1);
    return true;
  } finally {
    console.log(2);
    return false; // 這句會覆蓋掉前面的return
  }
  console.log(3); // 不會運(yùn)行
}
var result = fn();
// 0
// 1
// 2

console.log(result) // false

優(yōu)秀文章首發(fā)于聚享小站,歡迎關(guān)注!

總結(jié)

以上是生活随笔為你收集整理的JS对象类型Error错误对象的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。