JavaScript 自學筆記39

本文详细介绍了JavaScript中的异常处理机制,包括try...catch...finally语句的使用,以及如何通过throw语句抛出异常。同时,展示了如何利用Error类创建自定义错误,并在函数中捕获和处理这些异常。最后,通过示例说明了自定义异常在实际编程中的应用。
摘要由CSDN通过智能技术生成

1. 異常處理之try...catch...finally語句

(1). 語法:

try {

// 可能會引起報錯的代碼。如果代碼沒有報錯,則會執行此代碼。否則,系統會執行catch裏的代碼。

} catch (error){

  • // 注意:(error) 在ES2019以後可以省略。即:try {} catch{}。

// 處理異常發生時的代碼。如果代碼發生報錯,則會執行此代碼。否則,系統會直接忽略此代碼。

} finally {

// 無論異常是否發生,都一定會執行的代碼。

}

如:// 調用一個並不存在的函數

let animal = 'cat';

try {

let isAnimal = isAnimal(animal);

} catch (error) {

console.log(error);

} finally {

console.log('End.');

}

// TypeError: isAnimal is not a function

// End.

(2). 注意事項

  • 由於finally裏的語句始終會被執行,導致try和catch中的return語句都會被系統直接忽略。

如:function example() {

try {

return 'a';

} catch (e) {

return e;

} finally {

teturn "End.";

}

}

console.log(example()); // End.

2. 抛出異常 throw exception

(1). 語法:

  • throw 表達式;

如:function isNumber(num) {

if (typeof num === 'number'){

return true;

} else {

throw num + ' is not a number.';

}

}

console.log(isNumber('p')); // Error: p is not a number.

// 如果使用try...catch語句捕捉報錯的話

function isNumber(num) {

if (typeof num === 'number'){

return true;

} else {

throw num + ' is not a number.';

}

}

try {

console.log(isNumber('p'));

} catch (e) {

console.log(e);

} // p is not a number.

(2). Error類

  • throw語句也可以抛出Error類的實例。

如:function isNumber(num) {

if (typeof num === 'number'){

return true;

} else {

throw new Error (num + ' is not a number.');

}

}

try {

console.log(isNumber('p'));

} catch (e) {

console.log(e);

} // Error: p is not a number.

(3). 用戶還可以自定義異常

  • 通過繼承Error類,用戶可以自定義一個新的異常。

如:// 自定義一個異常

class NumberError extends Error {

constructor(number){

super(`${number} is not a number.`);

this.name = 'NotNumber';

}

}

// 在函數中使用該自定義異常

function isNumber(num) {

if (typeof num === 'number'){

return true;

} else {

throw new NumberError (num);

}

}

// 測試自定義異常是否能夠正常使用。

try {

console.log(isNumber('p'));

} catch (e) {

console.log(e);

} // NotNumber: p is not a number.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值