Excepções em Csharp

andrepadez

Power Member
Boas pessoal,
o 1º post no fórum é logo com uma dúvida.

Estou a aprender a programar com objectos e se fosse com ifs resolvia isto na boa.
Tenho uma classe "Ponto". no programa principal, criei um array global de Pontos, com tamanho 5(por exemplo).

No form principal, tenho uma NumericUpDown que permite ao utilizador seleccionar de 1 a 5(no array 0-4) e um botão que "cria" uma instância de ponto no índice seleccionado.

Alguma sugestão para o programa não deixar criar e avisar o utilizador caso o ponto de índice escolhido pelo utilizador já esteja criado??
E já agora, se eu puser uma caixa de texto e o utilizador exceder o limite de índice ou colocar letras por exemplo.

Lembrem-se que o meu objectivo não é martelar ou resolver a situação, mas sim perceber como tratar uma classe no paradigma OOP.

Muchas Gracias

André
 
Boas Xpirito,

realmente penso que deve ser com essas funções que vou conseguir.
O problema é que ainda não consegui encontrar informação suficientemente detalhada sobre como as usar.
Podes dar-me um exemplo?

e onde eu coloco o throw catch???


Thanx
 
Bom, o sistema de "excepções" não se enquadra especificamente com o webdesign... é usado em praticamente todas as linguagens de programação modernas, desde o Java ao C++ (e todas as linguagens compatíveis com a plataforma .NET), entre outros. O intuito é interromper a execução de uma aplicação de forma controlada pelo programador, lançando e capturando excepções de forma "user-friendly". Isso permite na maioria das vezes efectuar acções em função do tipo de excepção gerada pela aplicação e/ou informar o utilizador acerca do erro gerado e possíveis causas/soluções.

Basicamente, e explicado de forma muito simples, podes consultar informação aqui:
http://msdn2.microsoft.com/en-us/library/dszsf989(VS.71).aspx
http://pt.wikipedia.org/wiki/Tratamento_de_exceção
http://www.dotnet.com.pt/default.as...y&url=try-catch-finally\try-catch-finally.htm
(todos estes artigos abordam o mecanismo de excepções especificamente em C#)
 
Muito obrigado.
Vou ler e aprender, hehe.

Thanx.

Após isto hei de ter umas questões mais complicadas sobre um programa que escrevi imperativamente e queria passar para objectos, mas por agora tá-se.
 
Desculpa chatear, ainda em relação ao problema anterior.
O try catch funciona para a segunda parte da validação, mas a primeira não estou a ver como possa fazer sentido.
Vou explicar:

ao correr o prog., este cria um array de Ponto [5];
ao clickar no botão "Criar Ponto" é criado um ponto no array, com o indice definido pelo user.
Se o user tentar criar mais um ponto no mesmo índice, o programa substitui o original com o novo, eu queria que aparecesse uma mensagem a dizer que o ponto já existe.

Como é que consigo obter essa informação???

Mais uma vez obrigado
 
penso que seja assim

if(ponto[<variavel do indice que o utilizador definiu>].lenght>0)
messagebox.show("ja exite valores neste campo");


pode estar alguma coisa mal escrita, nao tenho aqui o c# express para testar, mas na teoria será assim,
depois podes fazer else e afins...
 
Ok, muito obrigado pr3t3nd3r.
Não sabia que poderia aplicar o método Length assim, grazie mille.

Quanto ao teu nick, se ele se refere a uma série de televisão do qual sou fã incondicional, Jarod, se quiseres tenho todos os episódios das quatro temporadas mais uns especiais nuns dvds. PM

Abraço
 
Ok, para fechar este thread, que peço desde já desculpa por ter colocado no local errado, a partir de agora uso Programação para este tipo de dúvidas:

Experimentei com o Length, mas logo que percebi que não era o que procurava, pois a criação de instâncias pelo user não é sequencial; este pode escolher criar o ponto 3 depois o 1, logo a seguir o 5, etc, enquanto os outros índices do array estão null.

Felizmente, ao teclar percebi num instante a solução, obrigado:

Dentro da classe crio:

- atributo:
Código:
private boolean existe;

- no método construtor altero para:

Código:
public Ponto(int x, int y)
{
this.x = x;
this.y = y;
this.existe = true;
}

- e finalmente o seguinte método:

Código:
Public boolean Existe;
{
    get { return existe;}
    set { this.existe = value; }
}

Assim, quando no programa principal quiser criar um botão ele só o faz...

Código:
if ponto[índice].Existe
    MessageBox.Show("Ponto <índice> já existe");
else
    ponto[índice] = new Ponto (x,y);


Espero que isto acabe por ajudar alguém para além de mim.
Obrigado a todos, vou sem dúvida começar a frequentar este fórum.
 
Ok, continua sem dar pela seguinte razão:

Quando um objecto não existe, não se consegue aceder aos seus métodos (duhhh).
Para isso usei um try catch para lidar com as excepções e ficou perfect.

Sayonara
 
Back
Topo