Пример за използване на изключения
Като пример за използване на изключения нека разгледаме класа 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++ | Записки по програмиране