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

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:

1
2
3
4
5
6
7
8
9
10
11
12
13
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.

1
2
3
4
5
6
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

1
2
3
4
5
6
7
8
9
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).

1
2
3
4
5
6
7
8
9
10
11
var domain = 'qa.code24h.com'
 
try {
    if (domain !== 'code24h.com'){
        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.

1
2
3
4
5
6
7
8
9
10
11
12
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:

1
2
3
4
5
6
7
8
9
10
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.


Code Dev

144 Blog posts

Comments