Artigo: 816157 - Última revisão: quarta-feira, 16 de Julho de 2008 - Revisão: 3.1

Como utilizar estruturada excepções no Visual C# .NET e Visual C# 2005 ou o Visual C# 2008

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.

Nesta página

Expandir tudo | Reduzir tudo

Sumário

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.

Requisitos

A lista seguinte descreve o hardware recomendado, software, infra-estrutura de rede e service packs que necessita:
  • O Visual C# .NET ou versões posteriores do Visual C#

Este artigo pressupõe que está familiarizado com os seguintes tópicos:
  • O Visual C# .NET ou versões posteriores do Visual C#
  • Microsoft Visual Studio .NET ou ou versões posteriores do Visual Studio

Processamento de excepções estruturada

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.

Detectar uma excepção

  1. 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
  2. No menu ficheiro , aponte para Novo e, em seguida, clique em projecto .
  3. Na caixa de diálogo Novo projecto , siga estes passos:
    1. 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 .
    2. Em modelos , clique em Consola de aplicação .
    3. Na caixa nome , escreva MyConsoleApp .
    4. Na caixa localização , escreva C:\ e, em seguida, clique em OK .
  4. 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();
    			}
  5. 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:

    Ocorreu um erro de tempo de execução
  6. Feche a janela da consola.

Detectar várias excepções

Esta secção demonstra como utilizar várias instruções catch para processar erros diferentes.
  1. Abra o projecto da consola de aplicação que criou na secção "Catch an Exception" deste artigo.
  2. 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.
  3. Para executar a aplicação, clique em Iniciar , no menu Debug . A Consola de janela apresenta a seguinte mensagem de erro:
    Erro: Sobrecarga
  4. Feche a janela da consola .
  5. 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:
    catch (Exception e)
    			{
    				Console.WriteLine("Error: ", e.Message);
    			}
  6. No menu ficheiro , clique em Fechar solução .

Accione uma excepção

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.
  1. 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
  2. No menu ficheiro , aponte para Novo e, em seguida, clique em projecto .
  3. Na caixa de diálogo Novo projecto , siga estes passos:
    1. 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 .
    2. Em modelos , clique em Consola de aplicação .
    3. Na caixa nome , escreva MyNewConsoleApp .
    4. Na caixa localização , escreva C:\ e, em seguida, clique em OK .
  4. No menu projecto , clique em Adicionar classe .
  5. 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 .
  6. 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.
  7. Na função Main() do Class1.cs , adicione o seguinte código:
    clsPerson p = new clsPerson();
    
    			try 
    			{
    				p.Age = -1;
    			}
    			catch (Exception e)
    			{
    				Console.WriteLine(e.Message);
    			}
    			finally
    			{
    				Console.ReadLine();
    			}
  8. Para executar a aplicação, clique em Iniciar , no menu Debug . A janela da consola mostra a seguinte mensagem de erro:
    Duração não pode ser negativa
  9. Feche a janela da consola .

Concluir lista de código

Detectar uma excepção

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.");
			}
		}
	}
}

Referências

Para mais informações, visite o seguinte Web site da Microsoft:
Excepção Management Application Block para o .NET
http://msdn2.microsoft.com/en-us/library/ms954830.aspx (http://msdn2.microsoft.com/en-us/library/ms954830.aspx)

A informação contida neste artigo aplica-se a:
  • Microsoft Visual C# .NET 2003 Standard Edition
  • Microsoft Visual C# .NET 2002 Standard Edition
  • Microsoft Visual C# 2005 Express Edition
  • Microsoft Visual C# 2008 Express Edition
Palavras-chave: 
kbmt kbprogramming kbexcepthandling kbhowtomaster KB816157 KbMtpt
Tradução automáticaTradução automática
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/ )