Werfen einer Exception angebracht?
Verfasst: Mi Jan 16, 2013 6:06 pm
Mal eine Meinungsfrage:
Ich habe einen einfachen Stack in C++ implementiert.
Wie würdet ihr die pop() bzw. top() Methode implementieren, speziell den Fall, wenn eine der Methoden aufgerufen wird obwohl der Stack leer ist?
Wie ihr seht, gebe ich in diesem Fall einfach 0 zurück, da ich davon ausgehe, dass über die empty() - Methode ja abgefragt werden kann, ob noch was auf dem Stack ist.
Laut einer anderen Meinung wäre hier jedoch das Werfen einer Exception (also bei top und pop) besser.
Was meint ihr?
LG
Daniel
Ich habe einen einfachen Stack in C++ implementiert.
Wie würdet ihr die pop() bzw. top() Methode implementieren, speziell den Fall, wenn eine der Methoden aufgerufen wird obwohl der Stack leer ist?
Code: Alles auswählen
class Stack
{
private:
protected:
int * const _begin;
int * const _end;
int * _current;
public:
Stack(unsigned int size);
~Stack();
void push(int value);
int pop();
bool empty() const;
int top() const;
int const * begin() const;
int const * end() const;
};
Code: Alles auswählen
#include "stack.hpp"
Stack::Stack(unsigned int size = 10)
:
_begin(new int[size]),
_end(_begin + size - 1),
_current(_begin - 1)
{}
Stack::~Stack()
{
delete [] _begin;
}
void Stack::push(int value)
{
if (_current < _end)
{
_current++;
*_current = value;
}
}
int Stack::pop()
{
int value = 0;
if (_current >= _begin)
{
value = *_current;
_current--;
}
return value;
}
bool Stack::empty() const
{
return (_current < _begin);
}
int Stack::top() const
{
int value = 0;
if (_current >= _begin)
{
value = *_current;
}
return value;
}
int const * Stack::begin() const
{
return _begin;
}
int const * Stack::end() const
{
return _end;
}
Laut einer anderen Meinung wäre hier jedoch das Werfen einer Exception (also bei top und pop) besser.
Was meint ihr?
LG
Daniel