Ngoại lệ C ++
Ngoại lệ C ++
Khi thực thi mã C ++, các lỗi khác nhau có thể xảy ra: lỗi mã hóa do lập trình viên thực hiện, lỗi do nhập sai hoặc những điều không thể lường trước khác.
Khi xảy ra lỗi, C ++ thường sẽ dừng và tạo ra thông báo lỗi. Thuật ngữ kỹ thuật cho điều này là: C ++ sẽ ném một ngoại lệ (ném một lỗi).
C ++ thử và nắm bắt
Xử lý ngoại lệ trong C ++ bao gồm ba từ khóa try
:, throw
và catch
:
Câu try
lệnh cho phép bạn xác định một khối mã để kiểm tra lỗi trong khi nó đang được thực thi.
Từ throw
khóa ném ra một ngoại lệ khi một vấn đề được phát hiện, điều này cho phép chúng tôi tạo ra một lỗi tùy chỉnh.
Câu catch
lệnh cho phép bạn xác định một khối mã sẽ được thực thi, nếu có lỗi xảy ra trong khối try.
Từ khóa try
và catch
từ khóa đi theo cặp:
Thí dụ
try {
// Block of code to try
throw exception;
// Throw an exception when a problem arise
}
catch () {
// Block of code to handle errors
}
Hãy xem xét ví dụ sau:
Thí dụ
try {
int age = 15;
if (age >= 18) {
cout << "Access granted - you are old enough.";
} else {
throw (age);
}
}
catch (int
myNum) {
cout << "Access denied - You must be at least 18 years
old.\n";
cout << "Age is: " << myNum;
}
Giải thích ví dụ
Chúng tôi sử dụng try
khối để kiểm tra một số mã: Nếu age
biến nhỏ hơn 18
, chúng tôi sẽ throw
ngoại lệ và xử lý nó trong catch
khối của chúng tôi.
Trong catch
khối, chúng tôi bắt lỗi và làm điều gì đó với nó. Câu catch
lệnh nhận một tham số : trong ví dụ của chúng tôi, chúng tôi sử dụng một int
biến ( myNum
) (vì chúng tôi đang ném một kiểu ngoại lệ int
trong try
khối ( age
)), để xuất ra giá trị của age
.
Nếu không có lỗi xảy ra (ví dụ: if age
là 20
thay vì 15
, nghĩa là nó sẽ lớn hơn 18), catch
khối sẽ bị bỏ qua:
Thí dụ
int age = 20;
Bạn cũng có thể sử dụng throw
từ khóa để xuất ra một số tham chiếu, chẳng hạn như một số / mã lỗi tùy chỉnh cho mục đích tổ chức:
Thí dụ
try {
int age = 15;
if (age >= 18) {
cout << "Access granted - you are old enough.";
} else {
throw 505;
}
}
catch (int myNum) {
cout << "Access denied - You must be at least 18 years old.\n";
cout << "Error number: " << myNum;
}
Xử lý mọi loại ngoại lệ (...)
Nếu bạn không biết throw
kiểu được sử dụng trong try
khối, bạn có thể sử dụng cú pháp "ba chấm" ( ...
) bên trong catch
khối, cú pháp này sẽ xử lý bất kỳ loại ngoại lệ nào:
Thí dụ
try {
int age = 15;
if (age >= 18) {
cout << "Access granted - you are old enough.";
} else {
throw 505;
}
}
catch (...) {
cout << "Access denied - You must be at least 18 years
old.\n";
}