try {
// 可能引發異常的代碼塊
let result = 10 / 0; // 引發除以零的異常
} catch (error) {
// 異常處理代碼塊
console.error('An error occurred:', error.message);
}
catch
塊來處理多種異常try {
// 可能引發異常的代碼塊
throw new Error('Some error occurred');
} catch (error) {
// 異常處理代碼塊
console.error('An error occurred:', error.message);
} catch (anotherError) {
// 另一種異常的處理代碼塊
console.error('Another error occurred:', anotherError.message);
}
finally
區塊finally
區塊中的代碼無論是否引發異常都會執行,通常用於釋放資源或清理工作。
try {
// 可能引發異常的代碼塊
console.log('Try block executed');
} catch (error) {
// 異常處理代碼塊
console.error('An error occurred:', error.message);
} finally {
// 無論是否引發異常都會執行的清理代碼塊
console.log('Finally block executed');
}
JavaScript 中的常見異常類型包括:
Error
:通用錯誤類型。SyntaxError
:語法錯誤。ReferenceError
:引用錯誤,當試圖訪問未定義的變量時引發。TypeError
:類型錯誤,當試圖對不支持的操作數據類型進行操作時引發。RangeError
:範圍錯誤,當使用不在函數接受的範圍內的數值引發。我們可以使用 throw
關鍵字主動觸發異常。
function divide(a, b) {
if (b === 0) {
throw new Error('Division by zero is not allowed');
}
return a / b;
}
try {
console.log(divide(10, 0));
} catch (error) {
console.error('An error occurred:', error.message);
}
class CustomError extends Error {
constructor(message) {
super(message);
this.name = 'CustomError';
}
}
function process() {
throw new CustomError('Custom error occurred');
}
try {
process();
} catch (error) {
if (error instanceof CustomError) {
console.error('Custom error occurred:', error.message);
} else {
console.error('An error occurred:', error.message);
}
}
這些是使用例外處理的一些常見原因和方法,它們有助於提高程式的穩定性和可靠性,同時提供更好的錯誤訊息和更優雅的錯誤處理機制。