Escolar Documentos
Profissional Documentos
Cultura Documentos
Tratamento de Excessoes Com C
Tratamento de Excessoes Com C
Classes de excees
Em c#, uma exceo um objeto criado (ou lanado) quando uma
condio particular excepcional de erro ocorre. Esse objeto contm
informaes que podem ajudar a capturar e tratar o problema. Embora
possamos criar nossas prprias classes de excees, o DotNet nos d
muitas classes de excees predefinidas.
Capturando excees
J que o DotNet inclui um leque de classes de excees, como voc
pode us-las para capturar condies de erro em seu cdigo? Para lidar
com possveis condies de erro em seu cdigo c#, voc normalmente
vai dividir a parte relevante do seu programa em blocos de trs tipos
diferentes:
Blocos try que contm cdigo que forma a parte normal das
operaes do programa, mas que podem encontrar algumas
condies srias de erro.
Blocos catch que contm cdigo que lida com as vrias condies
de erro que podem aparecer enquanto o cdigo do bloco try est
sendo processado.
Tudo muito bom, tudo muito bem, mas a pergunta que no quer calar :
se o cdigo est rodando no bloco try, como ele sabe quando saltar para
o bloco catch se um erro ocorre?
Se um erro detectado, o cdigo faz uma coisa que conhecida como
lanamento de uma exceo. Em outras palavras, ele cria um objeto
baseado em uma classe de exceo e o lana, mais ou menos assim:
throw new OverflowException();
Aqui ns
instanciamos
um
objeto
de exceo
da classe
OverflowException. Assim que o computador encontra uma instruo de
lanamento de exceo (throw) dentro de um bloco try, ele
imediatamente procura por um bloco catch associado com o bloco try.
Se houver mais de um bloco catch associado com o bloco try, ele
identifica o bloco catch correto checando que classe de exceo est
associada a que bloco catch.
Por exemplo, quando o objeto do tipo OverflowException lanado, a
execuo salta para o seguinte bloco catch:
catch (OverflowException e)
{
...
}
Em outras palavras, o computador procura pelo bloco catch que indica
um objeto de exceo cuja classe se encaixa com a classe do objeto de
exceo lanado. Pode ser uma a mesma classe ou uma classe base.