GiaoTrinhC++(27Jun21)

(Hoang2711) #1
Ngôn ngữ lập trình C++

Tin Học Cho Mọi Người • 59

Cú pháp:


try { // khối mã cần kiểm tra thử
throw exception; } // ném ngoại lệ khi vấn đề phát sinh
catch () { // khối mã sẽ được thi hành, nếu xảy ra lỗi }

Hãy xem ví dụ sau:


Ví dụ  #include
using namespace std;
int main() {
try { int age = 15;
if (age >= 18) { cout << "Access granted - You are old enough."; }
else { throw (age); } }
catch (int numOne)
{ cout << "Access denied - Sorry, you are just " << numOne ; }
return 0; }
Kết quả: Access denied - Sorry, you are just 15


Giải thích: Chúng ta dùng khối try để kiểm tra một số mã: Biến age đang có trị là 15 nên điều
kiện (age >= 18) là sai, vế if không thỏa, nên vế else có hiệu lực, ở đó ta có lịnh { throw (age) ; }
sẽ ném một ngoại lệ và xử lý nó trong khối catch ngay dưới.


Trong khối catch, chúng ta bắt lỗi và làm điều gì đó về nó. Câu lệnh catch nhận một tham số:
trong ví dụ trên, ta dùng một biến kiểu số nguyên (int oneNbr) để nhận vì cái đã ném ra trong
khối try là kiểu int (age), dùng để in trị của tuổi.


Nếu không có lỗi nào xảy ra (ví dụ age = 20 thay vì age = 15, có nghĩa là age sẽ lớn hơn 18), khối
catch sẽ bị bỏ qua.


Bạn cũng có thể sử dụng từ khóa throw để ném một số tham chiếu (reference number), chẳng
hạn như một mã lỗi gì đó, cho mục đích tổ chức.


Khối try luôn luôn được thi hành, trong đó thường kiểm tra điều kiện để rồi có dẫn đến lịnh
throw một exception hay không. Chỉ khi nào có throw thì khối lịnh catch mới được thi hành (nếu
không throw thì không catch, có ném mới bắt).


Khi throw thì sẽ ném ra một biểu thức (số hoặc chuỗi đều được). Nếu ném ra biểu thức chuỗi thì
phải dùng một biến để chứa, không thể ghi trực kiện chuỗi (trong dấu nháy). Trị ném ra sẽ được
chứa trong đối số của catch, vì vậy kiểu dữ liệu của throw và catch phải giống nhau.
Ví dụ  #include
using namespace std;
int main() {
try { int age = 20;
if (age >= 18) { cout << "Access granted - You are old enough."; }
else { throw (age); } }
catch (int numOne)
{ cout << "Access denied - Sorry, you are just " << numOne ; }
cout << "\n...Test for exception completed!"; //lịnh ngoài try ... catch
return 0; }
Kết quả: Access granted - You are old enough....Test for exception completed!

Free download pdf