Throw trong JavaScript

Câu lệnh throw trong JavaScript

Trong bài viết này, bạn sẽ tìm hiểu về các câu lệnh throw trong JavaScript. Ở bài viết trước, bạn đã học cách xử lý ngoại lệ bằng cách sử dụng câu lệnh try…catch trong JavaScript. Câu lệnh try...catch xử lý ngoại lệ theo cách tiêu chuẩn do JavaScript cung cấp. Tuy nhiên, bạn có thể sử dụng câu lệnh throw để bỏ qua các ngoại lệ do người dùng định nghĩa.

Trong JavaScript, câu lệnh throw xử lý các ngoại lệ do người dùng định nghĩa. Ví dụ: nếu một số xác định chia cho 0 và nếu bạn cần coi Infinity là một ngoại lệ, bạn có thể sử dụng câu lệnh throw để xử lý ngoại lệ đó.


Câu lệnh throw

Cú pháp của câu lệnh throw là:

throw expression;Code language: JavaScript (javascript)

Ở đây, expression là biểu thức, xác định giá trị của ngoại lệ.

Ví dụ:

const number = 5;
throw number/0; // tạo ra một ngoại lệ khi chia cho 0Code language: JavaScript (javascript)

Lưu ý: Biểu thức có thể là chuỗi, boolean, số hoặc đối tượng,…


Câu lệnh throw với try…catch

Cú pháp của try...catch...throw là:

try {
    // khối try
    throw exception;
} 
catch (error) {
    // khối catch  
}Code language: PHP (php)

Lưu ý: Khi câu lệnh throw được thực thi, nó sẽ thoát ra khỏi khối try và đi đến khối catch. Và đoạn mã bên dưới câu lệnh throw không được thực thi.

Ví dụ: try…catch…throw

let number = 40;
try {
    if(number > 50) {
        console.log('OK');
    }
    else {
        // Câu lệnh throw do người dùng định nghĩa
        throw new Error('The number is low');
    }
    // Nếu throw được thực thi, đoạn code bên dưới sẽ không được thực thi
    console.log('hello');
}
catch(error) {
    console.log('Lỗi đã được bắt!'); 
    console.log('Thông báo lỗi: ' + error);  
}Code language: JavaScript (javascript)

Output

Lỗi đã được bắt!
Error message: Error: The number is lowCode language: JavaScript (javascript)

Trong chương trình trên, nếu số nhỏ hơn 51, một lỗi sẽ xảy ra. Và lỗi đó được ném ra bằng cách sử dụng câu lệnh throw.

Câu lệnh throw xác định chuỗi The number is low là một biểu thức

Lưu ý: Bạn cũng có thể sử dụng các trình tạo lỗi được tích hợp sẵn cho các lỗi tiêu chuẩn: TypeErrorSyntaxErrorReferenceErrorTypeErrorEvalErrorInternalErrorRangeError.

Ví dụ:

throw new ReferenceError('this is reference error');Code language: JavaScript (javascript)

Rethrow ngoại lệ

Bạn cũng có thể sử dụng câu lệnh throw bên trong khối catch để ném lại một ngoại lệ. Ví dụ:

let number = 5;
try {
     // Câu lệnh throw do người dùng định nghĩa
     throw new Error('This is the throw');
}
catch(error) {
    console.log('Lỗi đã được bắt!');
    if( number + 8 > 10) {
        // xử lý ngoại lệ
        console.log('Thông báo lỗi: ' + error); 
        console.log('Lỗi đã được giải quyết');
    }
    else {
        // không thể xử lý ngoại lệ
        // ném lại ngoại lệ
        throw new Error('The value is low');
    }
}Code language: JavaScript (javascript)

Output

Lỗi đã được bắt!
Thông báo lỗi: Error: This is the throw
Lỗi đã được giải quyếtCode language: JavaScript (javascript)

Trong chương trình trên, câu lệnh throw được sử dụng trong khối try để bắt một ngoại lệ. Và câu lệnh throw được ném lại trong khối catch được thực thi nếu khối catch không thể xử lý ngoại lệ.

Ở đây, khối catch xử lý ngoại lệ và không có lỗi xảy ra. Do đó, câu lệnh throw không được ném lại.

Nếu lỗi không được xử lý bởi khối catch, câu lệnh throw sẽ được ném lại với thông báo lỗi Uncaught Error: The value is low.

Cùng đón chờ các bài hướng dẫn về ngoại lệ trong JavaScript trong các bài viết tiếp theo nhé!


Hãy tham gia nhóm Học lập trình để thảo luận thêm về các vấn đề cùng quan tâm.

Bình luận