Manipulação de exceção
|
Praticamente todo o programa including o c# .net pode ter alguma quantidade de erros. Podem amplamente ser classificados como erros compile-time e erros runtime. Os erros Compile-time são os erros que podem ser encontrados durante o processo da compilação do código de fonte. A maioria deles são erros da sintaxe. Os erros Runtime acontecem quando o programa está funcionando.
|
É muito difícil de encontrar e eliminar erros dos erros run-time. Estes erros chamaram também exceções. As réguas do estilo bom do coding dizem que o programa deve segura todo o erro runtime. A exceção gera uma chamada da exceção no runtime. As exceções em C# podem ser chamadas usando dois métodos:
|
- Usando o operador do throw. Chama o código controlar de qualquer maneira e processa uma exceção.
-
Se usar os operadores for awry, pode gerar uma exceção.
|
Tipos diferentes de exceções
|
A língua de C# usa muitos tipos de exceções, que são definidas em classes especiais. Todo são herdadas da classe baixa nomeada System.Exception. Há as classes que processam muitos tipos das exceções: fora da exceção da memória, a exceção do excesso de pilha, exceção nula da referência, índice fora da exceção da escala, invalid moldou a exceção, a exceção aritmética etc. Este tutorial do c# trata das classes da exceção e do costume do c# de DivideByZero em exceções do c#.
|
C# definiu alguns keywords para processar exceções. O mais importantes são tentativa, prendedor e finalmente.
|
Primeiro a ser sabido é o operador da tentativa. Isto é usado em uma parte do código, onde existe uma possibilidade de exceção a ser jogada. Mas operador? tentativa? é usado sempre com os operadores: prendedor e finalmente.
|
Ver o seguinte exemplo de segurar uma exceção simples no c#.
|
// try catch exception
int zero = 0;
try
{
int div = 100/zero;
}
catch(DivideByZeroException)
{
Console.WriteLine("Division by zero exception passed");
}
|
|
Este código no runtime joga um DivideByZeroException e escreve alguma mensagem através do console. Mas se você quiser se liberar alguns recursos que lhe foram criados devem usar a tentativa? finalmente construção. Será chamado finalmente mesmo se não houver nenhuma exceção levantada.
|
Bitmap bit = null;
// try finally exception
try
{
bit = new Bitmap(100,100);
}
finally
{
bit.Dispose();
Console.WriteLine("bitmap is disposed");
}
|
|
Na maneira similar nós podemos usar a tentativa? prendedor? finalmente construção.
|
Alguns projetos maiores puderam ter uma exigência de criar suas próprias classes feitas sob encomenda da exceção. Deixar-nos tentar criar a classe que valida o email address. Validará para? @? símbolo. Ter por favor um olhar na seguinte parte de código:
|
public class TextException : Exception
{
public TextException() : base()
{
}
public TextException(string message) : base(message)
{
}
}
public class MailValidator
{
MailValidator()
{
}
private static char symbol = '@';
public static void TestEnteredMail(string mailAddress)
{
if(mailAddress.IndexOf(symbol)==-1)
{
Console.WriteLine("The string entered is not a valid email address");
throw(new TextException());
}
}
}
|
|
Foram criados aqui A.A. #. Classe líquida de TextException que herda da classe de System.Exception da biblioteca da classe de .NET. Realmente não faz nada, mas há uma classe adicional MailValidator. Tem o método de TestEnteredMail que levanta um TextException. Olhar agora o uso dele na função principal.
|
try
{
MailValidator.TestEnteredMail(Console.ReadLine());
}
catch(TextException)
{
Console.WriteLine("Exception was passed");
}
|
|
Assim, se o usuário incorporar o endereço do correio sem “@” throws do símbolo uma exceção.
|
 |
 |
Keywords Exception Handling, java exception, oracle exception, c++ exception, c# exception,
jsp exception, exception api, exception tutorial, throw exception,
exception framework, exception vc++, exception plsql, struts exception,
exception throwing, package handling, throws exception, exception servlet,
exception sql, sample handling, exception block, catch exception, application exception,
exception method
|