Bài 02: Xử lý lỗi với try - catch trong Javascript

Việc quản lý lỗi và xuất thông báo lỗi trong NodeJS thực chất cũng là cách viết trong Javascript nên trong bài này mình chỉ tìm hiểu cách sử dụng đơn giản thôi nhé, còn thực hành thì chúng ta sẽ làm trong các series học NodeJS hoặc AngularJS.

1. Cách sử dụng Try Cache trong Javascript

Try - Catch là cấu trúc không còn xa lạ gì trong các ngôn ngữ lập trình như C#, và trong Javascript cũng cung cấp cho chúng ta cú pháp này để xử lý và xuất ra thông báo lỗi.  

Cú pháp như sau:

try {
    // Quăng lỗi ra
    throw("Noi dung loi");  
} catch (e){
    // Đón nhận lỗi và in ra
    // Vị trí này chỉ chạy khi ở try có quăng lỗi hoặc ở try 
    // sử dụng sai cú pháp ...
    console.log(e.message);
} finally{
    // Cuối cùng chạy cái này
    // Luôn luôn chạy sau cùng
    console.log('End of try cache');
}

Như vậy luồng chạy của chương trình như sau:

  • Bước 1: Thực hiện trong try.
  • Bước 2: Nếu trong try xuất hiện lỗi thì nhảy sang catch
  • Bước 3: Cuối cùng nhảy xuống finally

Như vậy vị trí finally sẽ luôn luôn được thực thi và sẽ thực thi cuối cùng. Với finally bạn có thể sử dụng hoặc không đều được. Riêng trong catch sẽ có một tham số truyền vào và tham số này sẽ chứa thông tin của lỗi và ta sử dụng biến này để lấy message.

Ví dụ: Sử dụng biến chưa định nghĩa, nếu bình thường thì chương trình bị dừng nhưng do ta sử dụng try - catch nên chương trình vẫn hoạt động bình thường.

try {
    // Sử dụng biến message chưa được định nghĩa
    console.log(message);  
} catch (e){
    console.log(e.message);
}

Nếu chạy đoạn code này lên thì sẽ nhận được thông báo là biến message chưa được định nghĩa (message is not defined).

Ví dụ: Sử dụng sai cú pháp nhưng chương trình vẫn chạy

try {
    fadsfas
    fasdfas
    fsda
} catch (e){
    console.log(e.message);
} finally{
    console.log('End');
}

Chương trình này nếu chạy lên thì xuất hiện dòng chữ 'fadsfas is not defined' và đoạn code trong finally vẫn hoạt động bình thường, điều này chứng tỏ chương trình không bị dừng.

Ví dụ: Sử dụng throw new Error('message') để xuất thông báo lỗi.

Nếu trong quá trình sử dụng bạn muốn kiểm tra điều kiện nào đó nếu không thỏa mãn thì quăng lỗi ra thay vì chờ đợi những lỗi thông thường như sai cú pháp thì bạn sử dụng throw new Error(message).

var domain = 'qa.freetuts.net'

try {
    if (domain !== 'freetuts.net'){
        throw new Error('Domain nay khong phai la trang chu');
    }
} catch (e){
    console.log(e.message);
} finally{
    console.log('End');
}

Chạy lên sẽ xuất hiện dòng chữ 'domain này không phải là trang chủ'.

2. Viết một lớp xuất thông báo lỗi

Để tiện cho việc quản lý lỗi thì thông thường chúng ta sẽ viết một lớp thông báo lỗi, ví dụ dưới đây dùng để quản lý việc thông báo lỗi cho người dùng.

function UserError(){
    
    this.throwLogin = function(){
        throw new Error('Invalid username and password');
    };
    
    this.throwSession = function(){
        throw new Error('Your request is timeout');
    };
    
    return this;
}

Để sử dụng thì chúng ta làm như sau:

var username = 'thehalfheart';
var password = 'admin@';
try {
    if (username !== 'admin' || password != 'admin@'){
        var UserError = new UserError();
        UserError.throwLogin();
    }
}catch (e){
    console.log(e.message);
}

3. Lời kết

Lời khuyên là với những website chỉ sử dụng Javascript để xây dựng hiệu ứng thì bạn có thể không dùng try - catch, nhưng với những website sử dụng công nghệ mới như NodeJS hoặc cácFramework như AngularJS thì ban nên sử dụng.

Ok bài này chỉ mang tính chất giới thiệu vè try -catch trong Javascript thôi nên mình sẽ dừng tại đây, hẹn gặp lại các bạn ở bài viết tiếp theo.

Hãy để lại link bài viết gốc khi chia sẻ bài viết này, mình sẽ report DMCA với những website lấy nội dung mà không để nguồn hoặc copy bài với số lượng lớn.

Nguồn: freetuts.net

Profile photo of adminTheHalfHeart

TheHalfHeart

Có sở thích viết tuts nên đã từng tham gia viết ở một số diễn đàn, đến năm 2014 mới có điều kiện sáng lập ra freetuts.net. Sinh năm 90 và có 1 vợ 2 con, thích ca hát và lập trình.

ĐĂNG BÌNH LUẬN: Đăng câu hỏi trên Group Facebook để được hỗ trợ nhanh nhất.