Dica do SistemaEste artigo aplica-se a um sistema operativo diferente do que está a utilizar. Foi desactivado o conteúdo do artigo, que pode não ser relevante para si.
Este artigo descreve como utilizar estruturada excepção a processar no Microsoft Visual C# .NET, no Microsoft Visual C# 2005 ou no Microsoft Visual C# 2008.
O Visual C# .NET fornece processamento de excepções estruturado que fornece uma poderosa e uma forma mais legível para processar erros. Estruturado de processamento de excepções permite-lhe aninhar os processadores de erro dentro de outros processadores de erro que estão a ser o mesmo procedimento. Processamento de excepções estruturado utiliza uma sintaxe de bloco é semelhante de se... Else... End If instrução. Este procedimento torna código do Visual C# .NET ou em versões posteriores do Visual C# mais legível e fáceis de manter. Pode tratar excepções no Visual C# .NET ou em versões posteriores Visual C# utilizando uma combinação de instruções de processamento de excepções:
tente
detectar
por fim
accionar
Sintaxe básica do processamento de erros estruturado é a seguinte:
try
{
// Code that is expected to raise an exception.
}
catch(Exception e)
{
// Code that can handle an error.
}
finally
{
// Code to do any final cleanup.
}
pode incluir qualquer código do Visual C# válido no bloco de tentar , ou pode incluir outro bloco tente ou outra hierarquia de blocos tente . Quando ocorre uma excepção em qualquer altura, o common language runtime procura o mais próximo bloco tente que inclua este código e não executa qualquer linhas adicionais de código. O controlo, em seguida, é transmitido para um correspondente catch bloco, se existir e o bloco associado finalmente . Também pode especificar várias instruções catch para que cada bloco catch processa um erro específico.
No Microsoft Visual Studio.NET, clique em Iniciar , aponte para programas , aponte para Microsoft Visual Studio .NET e, em seguida, clique em Microsoft Visual Studio. NET .
No Microsoft Visual Studio 2005, clique em Iniciar , aponte para programas , aponte para Microsoft Visual Studio 2005 e, em seguida, clique em Microsoft Visual Studio 2005 .
No Microsoft Visual Studio 2008, clique em Iniciar , aponte para programas , aponte para Microsoft Visual Studio 2008 e, em seguida, clique em Microsoft Visual Studio 2008
No menu ficheiro , aponte para Novo e, em seguida, clique em projecto .
Na caixa de diálogo Novo projecto , siga estes passos:
Em Project Types , clique em Visual C# Projects .
Nota No Visual Studio 2005 ou no Visual Studio 2008, clique em Visual C# em Project Types .
Em modelos , clique em Consola de aplicação .
Na caixa nome , escreva MyConsoleApp .
Na caixa localização , escreva C:\ e, em seguida, clique em OK .
Adicione o seguinte código na função Main() :
int a = 0;
int b = 10;
int c = 0;
try
{
a = b / c;
}
catch (Exception e)
{
Console.WriteLine("A run-time error occurred.");
}
finally
{
Console.ReadLine();
}
Para executar a aplicação, clique em Iniciar , no menu Debug . O código tenta um número de divisão por 0. Esta operação não é válida e provoca um erro de divisão por zero. No entanto, o bloco catch identificou este erro e a janela de consola apresenta a seguinte mensagem de erro:
Esta secção demonstra como utilizar várias instruções catch para processar erros diferentes.
Abra o projecto da consola de aplicação que criou na secção "Catch an Exception" deste artigo.
Substitua o código existente na função Main() com o seguinte código:
int a = 2147483647;
int b = 0;
int c = 0;
try
{
a = checked(a + 1);
}
catch (DivideByZeroException e)
{
Console.WriteLine("Error: Divide by Zero", e.Message);
}
catch (OverflowException e)
{
Console.WriteLine("Error: Overflow", e.Message);
}
finally
{
Console.ReadLine();
}
este código inclui dois blocos de detectar :
Um bloco catch identificou o erro de divisão por zero anterior.
Um bloco catch identificou o erro de excesso de novo.
Para executar a aplicação, clique em Iniciar , no menu Debug . A Consola de janela apresenta a seguinte mensagem de erro:
Erro: Sobrecarga
Feche a janela da consola .
Uma vez que não é possível antecipar sempre cada erro que poderão ocorrer, é possível adicionar um bloco catch para todas as excepções que não pode antecipar. Por exemplo, adicione o seguinte código antes da finalmente instrução para detectar quaisquer erros que não pode antecipar e para apresentar a mensagem apropriada:
Processamento de excepções estruturado utiliza a instrução catch para chamar uma excepção. Com o processamento de excepções estruturado, também pode de accione uma excepção. Por exemplo, poderá ser útil para accionar uma excepção quando efectua a validação de dados dentro de um Conjunto de propriedades procedimento, porque poderá pretende accionar um erro se uma regra de negócio é violada.
No Microsoft Visual Studio.NET, clique em Iniciar , aponte para programas , aponte para Microsoft Visual Studio .NET e, em seguida, clique em Microsoft Visual Studio. NET .
No Microsoft Visual Studio 2005, clique em Iniciar , aponte para programas , aponte para Microsoft Visual Studio 2005 e, em seguida, clique em Microsoft Visual Studio 2005 .
No Microsoft Visual Studio 2008, clique em Iniciar , aponte para programas , aponte para Microsoft Visual Studio 2008 e, em seguida, clique em Microsoft Visual Studio 2008
No menu ficheiro , aponte para Novo e, em seguida, clique em projecto .
Na caixa de diálogo Novo projecto , siga estes passos:
Em Project Types , clique em Visual C# Projects .
Nota No Visual Studio 2005 ou no Visual Studio 2008, clique em Visual C# em Project Types .
Em modelos , clique em Consola de aplicação .
Na caixa nome , escreva MyNewConsoleApp .
Na caixa localização , escreva C:\ e, em seguida, clique em OK .
No menu projecto , clique em Adicionar classe .
Na caixa de diálogo Adicionar novo item , escreva clsPerson.cs na caixa nome e, em seguida, clique em Abrir .
Nota No Visual Studio 2005 ou no Visual Studio 2008, clique em Adicionar .
Adicione o seguinte código na classe clsPerson :
public clsPerson()
{
}
private int mintAge;
public int Value;
public int Age
{
get
{
Age = mintAge;
return Age;
}
set
{
if(Value > 0)
mintAge = Value;
else
throw new ArgumentException("Age cannot be negative.");
}
}
este código cria uma propriedade de idade . Uma vez que uma pessoa não é possível ter uma duração negativa, é accionado um erro se o utilizador da classe tentar definir a propriedade Age como um número que seja menor que 0.
Na função Main() do Class1.cs , adicione o seguinte código:
using System;
namespace MyConsoleApp
{
class Class1
{
[STAThread]
static void Main(string[] args)
{
int a = 0;
int b = 0;
int c = 0;
try
{
a = b / c;
}
catch (Exception e)
{
Console.WriteLine("A run-time error occurred.");
}
finally
{
Console.ReadLine();
}
}
}
}
Detectar várias excepções
using System;
namespace MyConsoleApp
{
class Class1
{
[STAThread]
static void Main(string[] args)
{
int a = 2147483647;
try
{
a = checked(a + 1);
}
catch (DivideByZeroException e)
{
Console.WriteLine("Error: Divide by Zero", e.Message);
}
catch (OverflowException e)
{
Console.WriteLine("Error: Overflow", e.Message);
}
catch (Exception e)
{
Console.WriteLine("Error: ", e.Message);
}
finally
{
Console.ReadLine();
}
}
}
}
Accione uma excepção
using System;
namespace MyNewConsoleApp
{
class Class1
{
[STAThread]
static void Main(string[] args)
{
clsPerson p = new clsPerson();
try
{
p.Age = -1;
}
catch (Exception e)
{
Console.WriteLine(e.Message);
}
finally
{
Console.ReadLine();
}
}
}
public class clsPerson
{
public clsPerson()
{
}
private int mintAge;
public int Value;
public int Age
{
get
{
Age = mintAge;
return Age;
}
set
{
if(Value > 0)
mintAge = Value;
else
throw new ArgumentException("Age cannot be negative.");
}
}
}
}
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine translation ou MT), não tendo sido portanto revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática? erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 816157
(http://support.microsoft.com/kb/816157/en-us/
)
Qual foi o esforço que despendeu pessoalmente para utilizar este artigo?
Muito baixo
Baixo
Moderado
Elevado
Muito elevado
Diga-nos porquê e o que podemos fazer para melhorar estas informações
Obrigado! Os seus comentários são utilizados para ajudar-nos a melhorar o conteúdo do nosso suporte. Para obter mais opções de assistência, visite a Home Page de Ajuda e Suporte.