Duvida em Exceções

28/11/2007

1

Estou estudando EXCECÕES mas estou com umas duvidas no codigo abaixo. As linhas em negrito eu estou com duvida, se alguem poder me dar umas dicas do significado, eu agradeço.

[b:48e9c0ef74]Enum Erro {ExPilhaCheia, ExPilhaVazia, ExTamanhoInvalido};[/b:48e9c0ef74]
CPilha::CPilha (int tam) {
if(tam >0) {
vet=new int[tam];
maxElementos = tam;
topo = 0; }
else {
[b:48e9c0ef74]Erro err = ExTamanhoInvalido;
Throw err;[/b:48e9c0ef74]
}
}
try {
int tam;
cout<<´Digite o tamanho da Pilha: ´;
cin>> tam;
CPilha p(tam);
}

[b:48e9c0ef74]catch (Erro e) {
switch (e) {
case ExTamanhoInvalido cout<< ´Tamanho invalido´;
case ExPilhaazia: cout<< ´Pilha Vazia´;
case ExPilhaCheia: cout<< ´Pilha cheia´;[/b:48e9c0ef74] }
}


Responder

Posts

29/11/2007

Rodc

Você só pode dar throw em uma classe filha de Exception. No seu código ´Err´ é uma variável do tipo Enum.
Exemplos de uso de Throw:
Throw Exception("Erro teste");
Throw EInvalidNumber("Número inválido");

O que você pode fazer é colocar o erro dentro da mensagem de erro:
Throw Exception("Tamanho invalido");
ou criar uma classe de erro para cada tipo de erro, podendo assim pegar o tipo no catch. Exemplo de uma classe de excessão (sem passagem de parâmetro):
No .h:
class EPilhaCheia : public Exception
{
public:
__fastcall EPilhaCheia();
};

No .cpp:
__fastcall EPilhaCheia::EPilhaCheia()
: Exception("")
{

}

Exemplo de Uso:
try {
    throw EPilhaCheia();

} catch (EPilhaCheia &e)
{
    Beep();
}



Responder
×
+1 DevUP
Acesso diário, +1 DevUP
Parabéns, você está investindo na sua carreira