Você está aqui: Java ::: Tratamento de Erros ::: Passos Iniciais

Como usar try catch em Java - Aprenda a tratar erros em Java usando o bloco try...catch

Quantidade de visualizações: 39678 vezes
A forma mais comum de tratar e se recuperar de erros em uma aplicação Java é usando o bloco try...catch. Todo o código que apresenta a possibilidade de erros ou falhas é colocado em um bloco try. E o código a ser executado caso o erro ou falha aconteça é colocado em um bloco catch. Veja a sintáxe:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

try{
  // código que pode provocar erros
}
catch(Tipo_Exceção nome){
  // tratamento do erro
}

A palavra-chave catch é seguida por uma declaração do tipo de exceção sendo lançada. É aqui que entram detalhes interessantes. Antes de tratar um erro, é preciso que você saiba qual erro estará tratando. Em Java temos três tipos de erros: runtime exceptions, checked exceptions e errors. Errors não precisam ser tratados com bloco try...catch, runtime exceptions (erros causados por códigos mal escritos ou mal testados) opcionalmente usam try...catch e checked exceptions (erros que fogem ao controle do programador) devem obrigatoriamente usar try...catch.

Vamos ver um exemplo do uso de try...catch:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

import java.io.*;

public class Estudos{
  public static void main(String[] args){
    try{
      DataInputStream in = new DataInputStream(
        new BufferedInputStream(
          new FileInputStream("conteudo.txt")));
        
      while(in.available() != 0)
        System.out.print((char) in.readByte());
    } 
    catch(IOException e){
      System.out.print(e.getMessage());
    }

    System.exit(0);
  }
}  

Neste trecho de código nós tentamos ler o conteúdo de um arquivo. O que aconteceria se o arquivo não existisse? O programa entraria em colapso. Além disso, todas as operações de entrada e saída (IO) estão suscetíveis a falhas externas. Por esta razão, o compilador nos força a usar try...catch nestas situações.

Neste exemplo podemos ver que o bloco catch é seguido por uma definição da classe IOException. No entanto, este trecho de código pode também disparar a exceção FileNotFoundException. Olhando a documentação vemos que FileNotFoundException herda de IOException, que por sua vez herda de Exception. Isso nos mostra que, se não estivermos certos de qual exceção será lançada, podemos usar a superclasse Exception e usarmos o método getMessage() ou demais métodos para obter maiores informações sobre o erro.

Vamos ver mais um exemplo de try...catch. Desta vez veremos como evitar uma exceção StringIndexOutOfBoundsException:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

import java.util.*;

public class Estudos{
  public static void main(String[] args){
    String palavra = "Java";    

    Scanner in = new Scanner(System.in);
    
    System.out.print("Informe um inteiro: ");
    int indice = in.nextInt();

    try{
      System.out.println("O caractere no índice " + 
        "informado é " + palavra.charAt(indice));
    }
    catch(StringIndexOutOfBoundsException e){
      System.out.println("Erro:" + e.getMessage());
    }
  }
}

Compile, execute este código e forneça um inteiro maior que 3 para ver o resultado.

Link para compartilhar na Internet ou com seus amigos:

Java ::: Pacote java.awt ::: Graphics

Como desenhar linhas em determinados ângulos usando o método drawLine() da classe Graphics - Computação Gráfica em Java

Quantidade de visualizações: 13641 vezes
É possível usar o método drawLine() da classe Graphics para desenhar linhas em determinados ângulos. Observe atentamente a assinatura deste método:

public abstract void drawLine(int x1,
  int y1, int x2, int y2)


Aqui x1 e x2 representam as coordenadas iniciais da linha e x2 e y2 representam as coordenadas finais. Assim, vamos analisar a fórmula matemática que permite definir o ângulo de desenho.

Comece definindo os valores para as coordenadas iniciais x1 e y1, o ângulo desejado e o comprimento da linha:

int x1 = 30;
int y1 = 50;
int ang = 0;
int comp = 100;


Vamos começar obtendo a coordenada x final, que chamaremos de x2. Já sabemos que o ângulo é 0, então obteremos uma linha horizontal para a direita. Vamos ao cálculo:

int x2 = (int)(x1 + 
  Math.cos(ang / 180.0 * Math.PI) * comp);


Já sabemos que o valor de x2 é igual a 0 pois (pode testar na barra de endereços de seu browser):

javascript:alert(0 / 180.0 * Math.PI)


resulta em 0 e:

javascript:alert(Math.cos(0))


resulta em 1. Assim: x1 + (1 * 100) = 130. Para que nosso código esteja correto, o valor de y2 deverá ser igual a y1. Vejamos:

int y2 = (int)(y1 - 
  Math.sin(ang / 180.0 * Math.PI) * comp);


Já sabemos que (ang / 180.0 * Math.PI) resulta em 0 e que o seno de 0 é 0. Assim: y1 - (0 * 100) = 50. Veja o código completo:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class Estudos extends JFrame{
  JLabel label;  

  public Estudos() {
    super("Desenhando em um JLabel");
    
    Container c = getContentPane();
    c.setLayout(new BorderLayout());

    // Cria um JLabel
    label = new JLabel();
    c.add(label, BorderLayout.CENTER);

    // Cria um botão
    JButton btn = new 
      JButton("Desenhar uma linha (ângulo)");
    btn.addActionListener(
      new ActionListener(){
        public void actionPerformed(ActionEvent e){
          
          // Desenha uma string no JLabel
          int x1 = 30; // coordenada inicial x
          int y1 = 50; // coordenada inicial y
          int ang = 0; // ângulo
          int comp = 100; // comprimento
          // coordenada x final
          int x2 = (int)(x1 + 
            Math.cos(ang / 180.0 * Math.PI) * comp);
          // coordenada y final
          int y2 = (int)(y1 - 
            Math.sin(ang / 180.0 * Math.PI) * comp);

          Graphics graphics = label.getGraphics();
          
          graphics.drawLine(x1, y1, x2, y2);    

        }
      }
    );
    
    // Adiciona o botão à janela
    c.add(btn, BorderLayout.SOUTH);

    setSize(350, 250);
    setVisible(true);
  }
  
  public static void main(String args[]){
    Estudos app = new Estudos();
    app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  }
}

Experimente agora fornecer ângulos diferentes, por exemplo, 45 (uma linha diagonal para a direita e para cima), 90 (uma linha vertical para cima), 135 (uma linha diagonal para a esquerda e para cima), 180 (uma linha horizontal para a esquerda), 225 (uma linha diagonal para a esquerda e para baixo), 270 (uma linha vertical para baixo), 315 (uma linha diagonal para a direita e para baixo) e 360 (uma linha horizontal para a direita).

Há algo de interessante neste código. Se você maximizar, minimizar ou redimensionar a janela verá que o desenho é apagado. Isso acontece porque todas as vezes que a janela sofre alguma alteração, ela é pintada novamente, juntamente com seus componentes filhos. Se você deseja que o desenho seja feito automaticamente novamente, é melhor fazer uma sub-classe do componente desejado e sobrescrever seu método paintComponent(). Nesta mesma seção você encontrará exemplos de como fazer isso.


Java ::: Desafios e Lista de Exercícios Resolvidos ::: Estruturas de Controle

Exercícios Resolvidos de Java - Como criar um conversor de moedas em Java - Um programa Java para converter de Real para Dólar e de Dólar para Real

Quantidade de visualizações: 1908 vezes
Pergunta/Tarefa:

Escreva um programa Java para converter de Real para Dólar e vice-versa. Seu programa deverá ler o valor a ser convertido e a opção de conversão, ou seja, se o usuário quer converter de Real para Dólar ou se quer converter de Dólar para Real. Em seguida mostre o valor convertido.

Você pode pedir também a cotação do Dólar ou já deixar definido no código. Na resolução eu fixei a cotação no código mesmo, tomando como base a cotação do Dólar na data 20/02/2023.

Sua saída deverá ser parecida com:

Valor a ser convertido: 7

1. Converter de Real para Dólar
2. Converter de Dólar para Real
Sua opção: 1

O valor convertido para Dólar é: $ 1,28

Valor a ser convertido: 1

1. Converter de Real para Dólar
2. Converter de Dólar para Real
Sua opção: 2

O valor convertido para Real é: R$ 5,46
Resposta/Solução:

Veja a resolução comentada deste exercício usando Java:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

package estudos;

import java.util.Scanner;

public class Estudos {
  public static void main(String[] args) {
    // vamos registrar aqui a cotaçao do dólar
    double cotacao_dolar = 5.4613; // 20/02/2023
    // valor informado e valor convertido
    double valor, valor_convertido;
    // para ler a opção do usuário
    int opcao;
    
    // para ler a entrada do usuário
    Scanner entrada = new Scanner(System.in);
    
    // vamos pedir para o usuário informar o valor a ser convertido
    System.out.print("Valor a ser convertido: ");
    valor = Double.parseDouble(entrada.nextLine());
    
    // vamos mostrar as opções de conversão
    System.out.println("\n1. Converter de Real para Dólar");
    System.out.println("2. Converter de Dólar para Real");
    System.out.print("Sua opção: ");
    opcao = Integer.parseInt(entrada.nextLine());

    // vamos fazer a conversão entre as moedas 
    switch(opcao){
      case 1: // efetua a conversão de Real para Dólar
        valor_convertido = valor / cotacao_dolar;
        System.out.printf("\nO valor convertido para Dólar é: $ %.2f\n\n",
          valor_convertido);
        break;
      
      case 2: // efetua a conversão de Dólar para Real
        valor_convertido = valor * cotacao_dolar;
        System.out.printf("\nO valor convertido para Real é: R$ %.2f\n\n",
          valor_convertido);
        break;
        
      default:
        System.out.println("\nVocê informou uma opção inválida.\n\n");
    }
  }
}



Java ::: Desafios e Lista de Exercícios Resolvidos ::: Geometria, Trigonometria e Figuras Geométricas

Exercícios Resolvidos de Java - Como calcular a área de um losango em Java

Quantidade de visualizações: 4533 vezes
Pergunta/Tarefa:

Um losango é um quadrilátero equilátero, ou seja, é um polígono formado por quatro lados de igual comprimento. Um losango é também um paralelogramo. Alguns autores exigem ainda que nenhum dos ângulos do quadrilátero seja reto para que ele seja considerado um losango.

A área (em metros quadrados) de um losango pode ser calculada usando-se a seguinte fórmula:



Onde D1 é a diagonal maior e D2 é a diagonal menor.

Escreva um programa Java que leia a diagonal maior e a diagonal menor e calcule a área do losango. Sua saída deverá ser parecida com:

Informe a medida da diagonal maior: 5
Informe a medida da diagonal menor: 10
A área (em metros quadrados) do losango é: 25
Resposta/Solução:

Veja a resolução comentada deste exercício usando Java console:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

package estudos;

import java.util.Scanner;

public class Estudos {
  public static void main(String[] args) {
    Scanner entrada = new Scanner(System.in);  
    
    // vamos ler os valores das diagonais maior e menor
    System.out.print("Informe a medida da diagonal maior: ");
    int diagonalMaior = Integer.parseInt(entrada.nextLine());
    System.out.print("Informe a medida da diagonal menor: ");
    int diagonalMenor = Integer.parseInt(entrada.nextLine());
    
    // calcula a area do losango
    int area = (diagonalMaior * diagonalMenor) / 2;
    // mostra o resultado
    System.out.println("A área (em metros quadrados) do losango é: " + area);
    
    System.out.println("\n");
  }
}



Vamos testar seus conhecimentos em JavaScript

Qual é a forma correta de se criar um array em JavaScript?

A) var cores = ["vermelho", "verde", "azul"];

B) var cores = (1: "vermelho", 2: "verde", 3: "azul");

C) var cores = "vermelho", "verde", "azul";

D) var cores = 1: ("vermelho"), 2: ("verde"), 3: ("azul");
Verificar Resposta Estudar Cards Todas as Questões

Vamos testar seus conhecimentos em Fenômeno de Transportes e Hidráulica

O manômetro

Um manômetro é o instrumento utilizado para medir a pressão de fluidos contidos em recipientes fechados. O manômetro para medição da pressão absoluta é usado quando pressões devem ser medidas, independentemente da pressão atmosférica. A pressão do meio medido é determinada contra uma pressão de referência, sendo que esta última corresponde ao ponto zero da pressão absoluta.

Nesse contexto, determine a pressão manométrica em P devido à deflexão do mercúrio do manômetro em U da figura a seguir.



A) Aproximadamente 77kPa.

B) Aproximadamente 89kPa.

C) Aproximadamente 94kPa.

D) Aproximadamente 106kPa.

E) Aproximadamente 111kPa.
Verificar Resposta Estudar Cards Todas as Questões

Vamos testar seus conhecimentos em Ética e Legislação Profissional

O código de ética profissional: Concorrência

Ao longo da história, os mercados foram se estruturando de diversas formas. Nesse contexto, em cada estrutura, a relação oferta e demanda assume comportamentos distintos em função das suas particularidades. Assim, podemos afirmar que, classicamente, o mercado, hoje, está estruturado de uma forma bem definida. Indique a alternativa que contém as possibilidades de estrutura de mercado.

A) Oligopólio, concorrência monopolista, empresa concorrencial, concorrência perfeita.

B) Monopólio, oligopólio, concorrência monopolista e concorrência interna.

C) Monopsônio, concorrência monopolista, oligopólio e concorrência perfeita.

D) Monopólio, oligopsônio, concorrência monopolista e concorrência perfeita.

E) Monopólio, oligopólio, concorrência monopolista, concorrência perfeita.
Verificar Resposta Estudar Cards Todas as Questões

Vamos testar seus conhecimentos em Fenômeno de Transportes e Hidráulica

Velocidade de entrada e saída de um fluido

O tanque tem uma entrada e uma saída de água. Determine a altura H do tanque em função da área A, velocidade de entrada V1 em um bocal com diâmetro d1 e velocidade de saída V2 em um bocal com diâmetro d2, após um intervalo de tempo t, sendo que o tanque se encontrava vazio. Determine também o tempo de enchimento do tanque conforme os dados:
H = 10m; A = 2,5m2; V1 = 0,7m/s; d1 = 20cm; V2 = 3m/s; d2 = 15 cm.

A) H = (V2d22 - V1d12)tπ/4A 0,08 segundos.

B) H = (V2 - V1)t/A 10,87 segundos.

C) H = (V2d22 - V1d12)tπ/4A 806 segundos.

D) H = (V2d22 - V1d12)tπ/A 201 segundos.

E) H = (V2d22 - V1d12)tπ/2A 403 segundos.
Verificar Resposta Estudar Cards Todas as Questões

Vamos testar seus conhecimentos em Python

Qual das formas abaixo é usada para criar uma LIST em Python?

A) valores = {5, 1, 9, 4}

B) valores = [5, 1, 9, 4]

C) valores = (5, 1, 9, 4)

D) valores = [5.. 1.. 9.. 4]

E) valores = list[5, 1, 9, 4]
Verificar Resposta Estudar Cards Todas as Questões

Mais Desafios de Programação e Exercícios e Algoritmos Resolvidos de Java

Veja mais Dicas e truques de Java

Dicas e truques de outras linguagens

Códigos Fonte

Programa de Gestão Financeira Controle de Contas a Pagar e a Receber com Cadastro de Clientes e FornecedoresSoftware de Gestão Financeira com código fonte em PHP, MySQL, Bootstrap, jQuery - Inclui cadastro de clientes, fornecedores e ticket de atendimento
Diga adeus às planilhas do Excel e tenha 100% de controle sobre suas contas a pagar e a receber, gestão de receitas e despesas, cadastro de clientes e fornecedores com fotos e histórico de atendimentos. Código fonte completo e funcional, com instruções para instalação e configuração do banco de dados MySQL. Fácil de modificar e adicionar novas funcionalidades. Clique aqui e saiba mais
Controle de Estoque completo com código fonte em PHP, MySQL, Bootstrap, jQuery - 100% funcional e fácil de modificar e implementar novas funcionalidadesControle de Estoque completo com código fonte em PHP, MySQL, Bootstrap, jQuery - 100% funcional e fácil de modificar e implementar novas funcionalidades
Tenha o seu próprio sistema de controle de estoque web. com cadastro de produtos, categorias, fornecedores, entradas e saídas de produtos, com relatórios por data, margem de lucro e muito mais. Código simples e fácil de modificar. Acompanha instruções para instalação e criação do banco de dados MySQL. Clique aqui e saiba mais

Linguagens Mais Populares

1º lugar: Java
2º lugar: Python
3º lugar: C#
4º lugar: PHP
5º lugar: Delphi
6º lugar: C
7º lugar: JavaScript
8º lugar: C++
9º lugar: VB.NET
10º lugar: Ruby



© 2024 Arquivo de Códigos - Todos os direitos reservados
Neste momento há 31 usuários muito felizes estudando em nosso site.