CPP-101: Обработка на изключения

Пример за използване на изключения

Като пример за използване на изключения нека разгледаме класа 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-блок за обработка на грешки, възникнали
при работа на програмата.

Публикувано в CPP-101, ООП с етикети , , . Постоянна връзка.

Един коментар по CPP-101: Обработка на изключения

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

Коментарите са затворени.