Tìm kiếm theo tiêu đề

Tin tức cộng đồng

[MỜI HỢP TÁC] Các kỳ thi Olympic Quốc tế 2026 (IMO - IEO - ISO)

Kính gửi Quý Lãnh đạo, Ban Giám hiệu và Quý Thầy/Cô, FermatTech (Đối tác Google tại VN) phối hợp cùng SCO Ấn Độ trân trọng kính mời tham gia 3 kỳ thi uy tín dành cho HS từ lớp 1 - 12: - IMO: Olympic Toán Quốc tế. - IEO: Olympic Tiếng Anh Quốc tế. - ISO: Olympic Khoa học...
Xem tiếp

Tin tức thư viện

Chức năng Dừng xem quảng cáo trên violet.vn

12087057 Kính chào các thầy, cô! Hiện tại, kinh phí duy trì hệ thống dựa chủ yếu vào việc đặt quảng cáo trên hệ thống. Tuy nhiên, đôi khi có gây một số trở ngại đối với thầy, cô khi truy cập. Vì vậy, để thuận tiện trong việc sử dụng thư viện hệ thống đã cung cấp chức năng...
Xem tiếp

Hỗ trợ kĩ thuật

  • (024) 62 930 536
  • 0919 124 899
  • hotro@violet.vn

Liên hệ quảng cáo

  • (024) 66 745 632
  • 096 181 2005
  • contact@bachkim.vn

lâpk trình

Wait
  • Begin_button
  • Prev_button
  • Play_button
  • Stop_button
  • Next_button
  • End_button
  • 0 / 0
  • Loading_status
Nhấn vào đây để tải về
Báo tài liệu có sai sót
Nhắn tin cho tác giả
(Tài liệu chưa được thẩm định)
Nguồn:
Người gửi: Đặng Anh Tuấn (trang riêng)
Ngày gửi: 23h:52' 09-09-2010
Dung lượng: 70.5 KB
Số lượt tải: 6
Số lượt thích: 0 người
Chương 10: Bắt ngoại lệ
Ngoại lệ (Exception)
Exception gồm:
Mô tả lỗi có thể xảy ra.
Đoạn mã lệnh trong đó xảy ra exception, nằm trong khối try{}
Những thứ gây ra exception nằm trong lệnh throw
Mã lệnh bắt lỗi trong catch
Ví dụ
Trong ví dụ về stack, lỗi có thể xảy ra khi:
Đẩy nhiều phần tử vào stack
Lấy phần tử ra khỏi stack rỗng
Lỗi có thể xảy ra là dạng out-of-bound
Ví dụ …
#include
#include
const int STACK_SIZE = 100;
class stack {
protected:
int count;
private:
int data[STACK_SIZE];
public:
stack(void);
void push(const int item);
int pop(void);
};
Ví dụ …
inline stack::stack(void)
{
count = 0;
}
inline void stack::push(const int item)
{
data[count] = item;
count++;
}
inline int stack::pop(void)
{
count--;
return (data[count]);
}
Ví dụ …
const int WHAT_MAX = 80;
class bound_err {
public:
char what[WHAT_MAX];
bound_err(char *_what) {
if (strlen(_what) < (WHAT_MAX -1))
strcpy(what, _what);
else
strcpy(what, "Internal error: _what is too long");
}
};
Ví dụ …
class b_stack: public stack {
public:
void push(const int item) throw(bound_err);
int pop(void) throw(bound_err);
};
Ví dụ …
inline void b_stack::push(const int item) throw(bound_err)
{
if (count >= STACK_SIZE)
{
bound_err overflow("Push overflows stack");
throw overflow;
}
stack::push(item);
}
inline int b_stack::pop(void) throw(bound_err)
{
if (count <= 0)
{
throw bound_err("Pop causes stack underflow");
}
return (stack::pop());
}
Ví dụ …
b_stack test_stack;
void push_a_lot(void) {
for (int i = 0; i < 5000; i++)
test_stack.push(i);
}
main ()
{
try
{
push_a_lot();
}
catch (bound_err &err)
{
cout << "Error: Bounds exceeded ";
cout << "Reason: " << err.what << ` `;
exit (8);
}
catch (...)
{
cout << "Error: Unexpected exception occurred ";
exit (8);
}
return (0);
}
 
Gửi ý kiến