0

Học Javascript part 5

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 tryfinally 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

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí