xu-ly-loi-trong-cpp.png (528 KB)

Khi thực thi mã C++, các lỗi khác nhau có thể xảy ra như lỗi mã do lập trình viên viết sai, lỗi do người dùng nhập sai hoặc nhiều trường hợp không lường trước được khác.

try, catch

Xử lý lỗi (exception, error) trong C++ bao gồm ba từ khóa try, throwcatch:

  1. try: cho phép chúng ta xác định một khối mã sẽ được kiểm tra lỗi trong khi nó đang được thực thi
  2. throw (ném, phát ra): sẽ phát ra một tín hiệu khi phát hiện lỗi
  3. catch (bắt): cho phép chúng xác định một khối mã sẽ được thực thi, nếu có lỗi xảy ra trong khối mã try.

Ví dụ

#include <iostream>

using namespace std;

int main() {
  try {
    int tuoi;
    cout << "Nhap tuoi cua ban:";
    cin >> tuoi;
    if (tuoi >= 18) {
      cout << "Ban da duoc phep truy cap";
    } 
    else {
      throw tuoi;
    }
  }
  catch (int tuoiCatch) {
    cout << "Khong duoc truy cap - Ban phai tren 18 tuoi\n";
    cout << "Tuoi cua ban: " << tuoiCatch << " tuoi";
  }
  return 0;
}

Nếu các em nhập một số nhỏ hơn 18 (ví dụ 10), thì kết quả sẽ là

Khong duoc truy cap - Ban phai tren 18 tuoi
Tuoi cua ban: 10

Dòng 14 các em throw một biến kiểu gì, thì dòng 18 các em cũng cần phải truyền vào biến kiểu tương tự cho khối catch

...

Nếu các em không biết kiểu dữ liệu khi throw được sử dụng trong khối try, các em có thể sử dụng cú pháp "ba chấm" (...) bên trong khối catch

#include <iostream>

using namespace std;

int main() {
  try {
    int tuoi;
    cout << "Nhap tuoi cua ban:";
    cin >> tuoi;
    if (tuoi >= 18) {
      cout << "Ban da duoc phep truy cap";
    } 
    else {
      throw tuoi;
    }
  }
  catch (...) {
    cout << "Khong duoc truy cap - Ban phai tren 18 tuoi\n";
  }
  return 0;
}