Duvida em Exceções

Delphi

28/11/2007

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] }
}


Novato-mg

Novato-mg

Curtidas 0

Respostas

Rodc

Rodc

28/11/2007

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();
}



GOSTEI 0
POSTAR