Exception – Try … Catch – Java, C++ e C#

Publicado: 26 de fevereiro de 2014 em C#, C/C++, Java

A Classe Exception, representa os erros que ocorrem durante a execução de aplicativos.

Um erro de aplicativo é um erro de tempo de execução que não pode necessariamente ser evitado escrevendo um código livre de erros.

Erros de tempo de execução podem ocorrer por uma variedade de razões. No entanto, nem todos os erros devem ser tratados como exceções em seu código.

Em alguns casos, um erro de programa pode refletir uma condição de erro esperada ou de rotina. Neste caso, você pode querer evitar o uso de tratamento de exceção para lidar com o erro do programa.

Em outros casos, um erro de programa reflete uma condição de erro inesperado que pode ser manipulado em seu código. Por exemplo, mesmo que você tenha verificado para garantir que existe um arquivo, ele pode ser excluído antes que você possa abri-lo, ou ele pode estar corrompido.

A falha do sistema é um erro de tempo de execução que não podem ser tratada por meio de programação de uma maneira significativa. Por exemplo, qualquer método pode lançar uma exceção OutOfMemory se o Runtime é incapaz de alocar memória adicional

Um modelo de tratamento de exceção que se baseia a representação de exceções como objetos, e a separação de código de programa e o código de tratamento de exceções em blocos TRY e blocos CATCH. Pode haver um ou mais blocos catch, cada um projetado para lidar com um determinado tipo de exceção, ou um bloco projetado para capturar uma exceção mais específica que outro bloco.

Exemplo:

Neste exemplo criamos uma classe para nosso erro herdada da classe Exception(Java, C++ e C#) e usamos o comando TryCatch para manipular o erro e exibir uma mensagem mais amigável para o usuário.

Java

Classe #1 – Principal

public class Principal
 {
  static double saldo = 0.0;
  static void saque (double valor) throws MinhaExcecao
  {
   if ( valor <= saldo )
   {
    saldo -= valor;
   }
   else
   {
    double insuficiente = valor - saldo;
    throw new MinhaExcecao(insuficiente);
   }
  }
  public static void main(String[] args)
  {
   // Efetua Um deposito na conta
   System.out.println("Deposito de: R$ 500,00");
   saldo = 500.00;

   // Tenta efetuar um saque
   try
   {
    System.out.println("Saque de: R$ 1000,00");
    saque(1000.00);
   }
   catch (MinhaExcecao erro)
   {
    System.out.println("Desculpe mas seu pedido ultrapassa o saldo em: "
                       + erro.pegaValor() );

    // Imprime conteudo do erro
    erro.printStackTrace();
   }
}
}

Erro

public class MinhaExcecao extends Exception

{
  private  double valor;
  public  MinhaExcecao ( double valor )
  {
   this.valor = valor;
  }

  public double pegaValor ( )
  {
   return valor;
  }
}

C++

Programa – Principal

#include "stdafx.h"
#include <iostream>
#include <exception>
#include "minhaexcecao.h"

using namespace std;

static double saldo = 0.0;

static void saque(double valor)
 {
  if (valor <= saldo)
  {
   saldo -= valor;
  }
  else
  {
   double insuficiente = valor - saldo;
   throw  MinhaExcecao(insuficiente);
  }
 }

int _tmain(int argc, _TCHAR* argv[])
 {

  // Efetua Um deposito na conta
  cout << "Deposito de: R$ 500,00" << endl;
  saldo = 500.00;

  // Tenta efetuar um saque
  try
  {
   cout << "Saque de: R$ 1000,00" << endl;   saque(1000.00);
  }
  catch (MinhaExcecao erro)
  {
   cout << "Desculpe mas seu pedido ultrapassa o saldo em: "    <<  erro.pegaValor() << endl;
  }
  system("pause");
  return 0;
 }

Erro – (.h)

#include "stdafx.h"
#include <iostream>
#include <exception>

using namespace std;

class MinhaExcecao : public exception
 {
private:

        double valor;

public:
    MinhaExcecao(double valor)
  {
   this->valor = valor;
  }

  double pegaValor()
  {
   return valor;
  }
 };

C#

Classe #1 – Principal

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace DesenvolvimentoAberto
 {
     class Program
     {
         static double saldo = 0.0;
         static void saque (double valor)
         {
            if ( valor <= saldo )
            {
               saldo -= valor;
            }
            else
            {
               double insuficiente = valor - saldo;
               throw new MinhaExcecao(insuficiente);
             }
          }

         static void Main(string[] args)
         {
             // Efetua Um deposito na conta
             Console.WriteLine("Deposito de: R$ 500,00");
             saldo = 500.00;

             // Tenta efetuar um saque
             try
             {
               Console.WriteLine("Saque de: R$ 1000,00");
               saque(1000.00);
             }
             catch (MinhaExcecao erro)
             {
               Console.WriteLine("Desculpe mas seu pedido ultrapassa o saldo em: "
                                  + erro.pegaValor() );

               // Imprime conteudo do erro
               Console.WriteLine(erro.StackTrace);
             }

             Console.ReadKey();
            }
     }
 }

Classe #2 – Erro

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace DesenvolvimentoAberto
 {
     class MinhaExcecao : Exception
     {
         private double valor;

         public MinhaExcecao(double valor)
         {
             this.valor = valor;
         }

         public double pegaValor()
         {
             return valor;

         }
     }
 }
Anúncios

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s