Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Propriedade Descritivo
chlsryu@hotmail.com Página 1
Série: QUALIDADE NO CÓDIGO 2007
Estrutura
Vejamos a estrutura básica para tratamento de exceções em C#
using System;
namespace MSDNBrasil
{
class MainClass
{
public static void Main(string[] args)
{
try
{
// Código a ser executado
}
catch (TipoExceção1 e)
{
// tratamento da exceção1
}
catch (TipoExceção2 e)
{
// tratamento da exceção2
}
catch (Exception e) // erro genérico
{
// tratamento genérico
}
finally
{
// Este bloco de código sempre será executado, havendo
ou não exceção!
}
}
}
Quando uma exceção for gerada, apenas um bloco catch é
executado, desviando o fluxo para o bloco finally (se este existir).
Digamos que uma exceção do tipo 1 é gerada, então apenas o bloco
catch (TipoExceção2 e) é executado, além do finally.
chlsryu@hotmail.com Página 2
Série: QUALIDADE NO CÓDIGO 2007
Vejamos a sintaxe:
// Gerando uma exceção simples
Throw New Exception(“Erro! Idade inferior a 18 anos”)
...
try
{
...
}
catch
{
Throw new eIdadeInvalida()
}
finally
{
// Este bloco de código sempre será executado, havendo
ou não exceção!
Console.WriteLine("Simples, não é?");
}
}
}
}
chlsryu@hotmail.com Página 3
Série: QUALIDADE NO CÓDIGO 2007
namespace MSDNBrasil
{
class MainClass
{
public static void Main(string[] args)
{
try
{
// Código
int Hora = (System.DateTime.Now.Hour);
if (Hora>13) {
throw new Exception("Backup não
poderá ser realizado
após as 13 horas!");
}
}
catch (System.Exception e)
{
// Apresenta o erro
Console.WriteLine(e.Message);
}
finally
{
// Este bloco de código sempre será executado, havendo
ou não exceção!
Console.WriteLine("Simples, não é?");
}
}
}
}
A figura 2 ilustra nosso segundo exemplo em execução.
chlsryu@hotmail.com Página 4
Série: QUALIDADE NO CÓDIGO 2007
if (Dia ==8) {
throw new eInvalidDay();
}
if (Hora<22) {
throw new eInvalidTime();
}
catch (eInvalidDay){
// Apresenta o erro para o tipo eInvalidDay
Console.WriteLine("------ erro: InvalidDate");
Console.WriteLine("Execute manualmente o
procedimento de backup");
}
finally
{
// Este bloco de código sempre será
executado,
havendo ou não exceção!
Console.WriteLine("Simples, não é?");
chlsryu@hotmail.com Página 5
Série: QUALIDADE NO CÓDIGO 2007
}
}
}
}
A figura 3 ilustra a aplicação sendo executada no dia 8, às 10:00hs.
chlsryu@hotmail.com Página 6
Série: QUALIDADE NO CÓDIGO 2007
BOAS PRÁTICAS EM C#
Na maioria das discussões que participei acerca do assunto
“boas práticas ou qualidade em escrita de código fonte”,
percebi que se não interrompêssemos as manifestações mais
inflamadas o resultado continuaria muito distante de um
consenso. Em outras palavras, cada um tem uma posição muito
individual sobre a questão.
chlsryu@hotmail.com Página 7
Série: QUALIDADE NO CÓDIGO 2007
chlsryu@hotmail.com Página 8
Série: QUALIDADE NO CÓDIGO 2007
Exemplo:
longMethodCall(expr1, expr2, expr3,
expr4, expr5);
e
var = a * b / (c - g + f) +
4 * z;
Outra premissa importante é a utilização de espaços em branco para
endentação. Seja qual for sua opinião sobre esta questão, exponho a
minha mais veementemente: _ Não use espaços em branco para
endentação, use tabulação!
chlsryu@hotmail.com Página 9
Série: QUALIDADE NO CÓDIGO 2007
chlsryu@hotmail.com Página 10
Série: QUALIDADE NO CÓDIGO 2007
chlsryu@hotmail.com Página 11
Série: QUALIDADE NO CÓDIGO 2007
Windows Forms
Componente Prefixo Exemplo
Form frm frmEntry
Label lbl lblHelpMessage
LinkLabel lnk lnkEmail
Button btn btnExit
TextBox txt txtLastName
Menu mnu mnuFileOpen
CheckBox chk chkReadOnly
RadioButton rad radType
GroupBox grp grpActions
PictureBox pic picIcon
Panel pnl pnlGroup
DataGrid grd grdQueryResult
ListBox lst lstPolicyCodes
CheckedListBox clb clbOptions
ComboBox cbo cboEnglish
ListView lvw lvwHeadings
TreeView tre treOrganization
TabControl tbc tbcOptions
DateTimePicker dtp dtpPublished
MonthCalendar mcl mclPeriod
HScrollBar hsb hsbMove
chlsryu@hotmail.com Página 12
Série: QUALIDADE NO CÓDIGO 2007
Data
chlsryu@hotmail.com Página 13