Desenvolvimento - Visual Studio

Identificando e corrigindo erros no Visual Studio

Veja neste artigo como identificar e corrigir erros em tempo de desenvolvimento e em tempo de execução no Visual Studio.

por Joel Rodrigues



Durante o desenvolvimento de aplicações, por mais simples que sejam, é normal que nos deparemos com alguns erros, tanto em tempo de design/compilação, quanto em tempo de execução. Quando temos erros em tempo de compilação, o IDE geralmente nos aponta os problemas e não permite que a aplicação seja executada até que estes sejam resolvidos. Porém, alguns erros não podem ser identificados em tempo de desenvolvimento, pois dependem de fatores externos que só podem ser acessados quando aplicação está em execução, tais como informações provenientes de uma base de dados ou arquivos presentes no computador.

Felizmente, o Visual Studio dispõe de recursos para nos auxiliar na identificação e correção de ambos os tipos de erro, garantindo maior agilidade e segurança no desenvolvimento de aplicações.

Neste artigo, veremos alguns erros comuns e como resolvê-los de forma bastante prática, utilizando algumas das principais funcionalidades do IDE. Começaremos pelos erros em tempo de desenvolvimento e em seguida simularemos alguns erros em tempo de execução.

Erros em tempo de desenvolvimento

Para estes exemplos, utilizaremos uma aplicação console. Então crie um novo projeto desse tipo e o primeiro exemplo, insira no método Main da classe Program o código constante na Listagem 1.

Listagem 1: Erro por falta de referência namespace

StreamReader reader = new StreamReader(@"C:\Projetos\Log.txt");
string conteudo = reader.ReadToEnd();
Console.WriteLine(conteudo);

Note que aparecerá uma linha vermelha sobre o nome da classe StreamReader indicando que há um erro. Se posicionarmos o cursor do mouse sobre o nome da classe, o Visual Studio nos mostrará uma mensagem informando que esse tipo não pôde ser identificado e sugere que pode estar faltando uma referência a um assembly (Figura 1). Se esta classe estiver contida em um namespace conhecido pelo Visual Studio, você pode pressionar CTRL+. (ponto) com o cursor posicionado sobre o nome da classe, e lhe serão oferecidas algumas opções. Uma delas é a de adicionar a referência ao namespace System.IO, onde está contida a classe StreamReader. Utilizando essa opção, a referência será adicionada no topo do arquivo e o erro desaparecerá.

Erro por falta de namespace

Figura 1: Erro por falta de namespace

Outro erro muito comum ocorre quando tentamos utilizar tipos de dados inválidos para algumas operações. Geralmente esse erro está relacionado a boxing e unboxing. Na Listagem 2 temos um exemplo de código que, se copiado para a função Main da classe Project, resultará em um erro indicado na terceira linha.

Listagem 2: Erro por uso incorreto de tipos de dados

int a = 100;
object b = a;
int c = b;

Novamente posicionando o cursor do mouse no local do erro, o Visual Studio informará que não é possível converter de forma implícita um tipo object para int e sugere que você pode precisar fazer um cast.

Se por acaso não observarmos essa indicação de erro e executarmos o projeto, o IDE nos mostrará uma caixa de diálogo informando que ocorreram erros durante a compilação (Figura 2). Assim você pode interromper a compilação, localizar o erro e corrigi-lo.

Notificação de erro ao tentar compilar o programa

Figura 2: Notificação de erro ao tentar compilar o programa

Ao clicar em No, uma mensagem novamente informando sobre o erro aparecerá na janela Error List (Figura 3), que normalmente fica localizada na parte inferior do IDE, indicando a descrição do erro e o local onde ele ocorreu. Clicando duas vezes sobre a linha em vermelho, você será direcionado para o local onde o erro ocorreu.

Janela Error List com indicação de erro

Figura 3: Janela Error List com indicação de erro

Esses foram apenas dois exemplos, entre os muitos erros em tempo de desenvolvimento que podem ocorrer. O que observamos aqui é que o Visual Studio identifica rapidamente esses problemas e inclusive nos sugere algumas medidas que podem corrigi-los. Esse tipo de recurso nos garante um desenvolvimento mais ágil e seguro.

Erros em tempo de execução

Como já foi dito, existem erros que só são gerados quando a aplicação está sendo executada. Esses erros podem ser dos mais variados tipos e serem causados por inúmeros motivos. Aqui simularemos um dos mais comuns. Crie duas classes simples para teste, conforme mostra a Listagem 3 e em seguida utilize-as no método Main, como mostra a Listagem 4.

Listagem 3: Classes para exemplo

class Endereco
{
    public string Rua;
}

class Pessoa
{
    public Endereco EnderecoResidencial;
}

Listagem 4: Utilizando um objeto não instanciado

Pessoa p = new Pessoa();
p.EnderecoResidencial.Rua = "Rua Tal";

Note que em tempo de desenvolvimento, nada está errado, mas ao executar a aplicação, recebemos a notificação de erro ao tentar atribuir valor à propriedade EnderecoResidencial da classe Pessoa. O Visual Studio informa: Referência de objeto não definida para uma instância de um objeto. Isso quer dizer que estamos tentando utilizar um objeto que não foi instanciado corretamente.

Ao nos informar sobre o erro, o Visual Studio também marca de amarelo a linha onde o problema ocorreu. Nesse momento, podemos passar o mouse sobre os objetos e suas propriedades para verificar seus valores, como mostra a Figura 4.

Verificando o valor de uma propriedade

Figura 4: Verificando o valor de uma propriedade

Como podemos ver, ao posicionarmos o ponteiro do mouse sobre a propriedade Endereco, identificamos que ela está nula, ou seja, como ela é um objeto, precisa ser instanciada antes de ser usada.

Observe que o IDE dá algumas sugestões de medidas que podem ser tomadas para corrigir o erro, tais como verificar se o objeto é nulo antes de acessá-lo, utilizar o operador new para criar uma nova instância, ou ainda procurar ajuda online.

Neste exemplo tivemos um erro bastante simples, mas existem situações onde teremos códigos mais extensos e erros não tão claros, que precisarão de uma análise mais profunda para serem identificados e corrigidos. Mas como vimos, o Visual Studio é um IDE bastante poderoso e que facilita a identificação e correção desse tipo de problema.

Joel Rodrigues

Joel Rodrigues - Técnico em Informática - IFRN Cursando Bacharelado em Ciências e Tecnologia - UFRN Programador .NET/C# e Delphi há quase 3 anos, já tendo trabalhado com Webservices, WPF, Windows Phone 7 e ASP.NET, possui ainda conhecimentos em HTML, CSS e Javascript (JQuery).