Hoje falaremos um pouco sobre tratamento de excessões e sobre o objeto Sender.
Exceptions
Para fazermos o tratamento de excessões utilizaremos o Try Catch do c#.
É muito simples e muito importante também, vamos a uma demonstração.
Definições:
Try = tenta
Catch = pega
Estrutura:
Try
{
//Entao aqui vem o seu codigo e se houver algum excessão ( erros ) e ele cairá no Catch conforme
// exemplo abaixo onde estamos tentando converter uma string para int.
string texto = “Teste”;
int numero = Convert.ToInt32(texto);
}
Catch(Exception ex)
{
//Cai estamos tratando o erro e mostrando na tela.
Console.WriteLine(“Ocorreu um erro : ” + ex.toString());
}
Podemos ter varios tipo de excessões desde SQL como uma simples conversão como mostrada acima.
Sempre devemos colocar os catchs (excessões) da mais complexa para a mais simples, no caso a mais basica (simples ) é a somente Exception. Portanto poderemos ter varios Catch ( cada um com seus exception especifico) para cada Try. Então você dera dizer “Se ocorrer um erro de SQL faça isso” , “Se ocorrer um erro de dados faça isso” e assim por diante.
Mas Lineker, como posso ver qual foi o erro ?
Quando você coloca “Catch(SQLException ex)” , ex pode ser qualquer nome que você quiser, estaremos atribuindo a excessão ao objeto ex. Se quisermos mostrar na tela o erro vamos passar o ex.toString() para aonde desejarmos. Dica: use o intellinsense para ver a propriedades das excessões ( ex: ex.[ira aparecer as propriedades])
Sender
Você perceberá este objeto quando criar um evento para por exemplo um botão. Faça o teste crie um projeto windows form, coloque um botão na tela e clique 2 vezes nele e você verá:
private void button1_Click(object sender, EventArgs e) { }
O sender nada mais é do que o objeto em si, neste caso o button.
Então se por exemplo você quer mudar a cor do botão quando ele for clicado usando o sender ficaria assim:
private void button1_Click(object sender, EventArgs e)
{
Button btn = (Button)sender;
btn.BackColor = Color.Red;
}
Claro que essa aplicação é simple e não faz muito sentido pois poderiamos fazer isso de maneira muito mais facil mas espero ter ajudado e esclarecido algumas duvidas dos novatos.
Abraços
Lineker Tomazeli