Học Javascript part 5
Bài đăng này đã không được cập nhật trong 7 năm
Hôm nay mình sẽ đề cập tới throw vaf try/catch/finally được sử dụng trong js.
Throw
1 exception
là 1 tín hiệu xác định 1 vài điều kiện ngoaị lệ hoặc lỗi xảy ra. Ném ra 1 exception tương đương với việc chỉ ra tại đó có 1 ngoại lệ hoặc có 1 lỗi xảy ra. Để "bắt" (catch) 1 exception để xử lý nó. Trong javascript, exception được throw trong quá trình chạy của máy hoặc bất cứ khi nào chương trình throw 1 lỗi tường mình sử dụng câu lệnh throw
. Exception được bắt bới các câu lệnh try/catch/finally
Câu lệnh throw có cú pháp như sau: throw expession;
expression
có thể ước lượng giá trị của bất kỳ kiểu nào. Bạn có thể throw ra 1 số diễn tả mã code của ngoại lệ hoặc 1 đoạn string miêu tả ngoại lệ. Error
class và các subclass của nó được sử dụng khi trình thông dịch của JavaScript ném ra 1 lỗi, bạn cũng có thể sử dụng chúng. Một Error object có 1 property chỉ là type
xác định lỗi thuộc loại nào và message
miêu tả chi tiết lỗi. Ví dụ:
function factorial(x) {
// Nếu input không đạt điều kiện nó sẽ throw ra 1 exception
if (x < 0) throw new Error("x không được âm");
// còn không nó sẽ return lại giá trị của f
for(var f = 1; x > 1; f *= x, x--)
return f;
}
Khi một exception được throw, trình thông dịch của Javascript ngay lập tức dừng chương trình và nhảy đến exception handler
gần nhất. Exception handler
được viết sử dụng mệnh đề catch
của câu lênh. try/catch/finally
. Nếu exception không được handler với try/catch/finally thì 1 exception được xem như 1 lỗi xẽ được bắn ra màn hình, với sublime text đó là dòng message màu đỏ.
Try/Catch/Finally
Câu lệnh Try/Catch/Finally là kĩ thuật handle exception của javascript.
Mệnh đề try
của câu lệnh này đơn giản là định nghĩ một block code tương nơi mà exception sẽ xảy ra.
Theo sau try
là mệnh đề catch
với block code để xử lý với exception tương ứng
Cuối cùng là finally
chứa 'block code' mà chắc chắn sẽ chạy bất kể exception có xảy ra hay không
try
và finally
có thể không có nhưng catch
thì bắt buộc phải có.
Ví dụ:
try {
}catch(e){
}
finally {
console.log("output"); //in ra output bất kể có hay không exception
}
Chú ý rằng catch
được theo sau đó bởi tham số exception
.
try {
// Hỏi user số đầu vào
var n = Number(prompt("Nhập vào 1 số dương", ""));
// Tính toán
var f = factorial(n);
// Hiển thị kết quả
alert(n + "! = " + f);
}
catch (ex) { Hiển thị lỗi nếu phát sinh
alert(ex); }
}
Bạn cũng có thể lồng Try/Catch/Finally vào vòng lặp như sau:
// for( initialize ; test ; increment ) body; initialize ;
while( test ) {
try { body ; }
finally { increment ; } }
Cám ơn bạn đã theo dõi !!!
All rights reserved