Пример за използване на изключения
Като пример за използване на изключения нека разгледаме класа Stack, който беше въведен в раздел Пример: Стек. За целта в методите push() и pop() е добавена обработка на грешки чрез генериране на изключения от типа StackError:
class StackError {};
const int STACK_SIZE=10;
class Stack {
int data_[STACK_SIZE];
int top_;
public:
Stack() {
top_=0;
}
void push(int val) {
if(top_>=STACK_SIZE)
throw StackError();
data_[top_++]=val;
}
int pop(void) {
if(top_<=0)
throw StackError();
return data_[--top_];
}
bool is_empty() {
return top_==0;
}
bool is_full() {
return top_==STACK_SIZE;
}
};
#include <cstdlib>
#include <iostream>
using namespace std;
int main(int arch, char* argv[]) {
char* msg="Hello Cruel World!";
char buff[10];
try {
Stack st;
for(char* p=msg;*p!='\0';p++)
st.push(*p);
char* p=buff;
while(!st.is_empty())
*p++=st.pop();
*p='\0';
} catch(StackError ex) {
cerr<<"StackError catched..."<<endl;
exit(1);
} catch(...) {
cerr<<"Unknown error catched..."<<endl;
exit(1);
}
return 0;
}
В главната функция на програмата от раздел \ref{stack1-example} е
добавен try-catch-блок за обработка на грешки, възникнали
при работа на програмата.

Pingback: CPP-101: Кратък обзор на езика за програмиране C++ | Записки по програмиране