logo

jogar e jogar em Java

Em Java, o tratamento de exceções é um dos meios eficazes de lidar com erros de tempo de execução para que o fluxo regular do aplicativo possa ser preservado. Ele lida com erros de tempo de execução, como NullPointerException ArrayIndexOutOfBoundsException etc. Para lidar com esses erros de maneira eficaz, o Java fornece duas palavras-chave throw e throws.

Lançamento de Java

A palavra-chave throw em Java é usada para lançar explicitamente uma exceção de um método ou qualquer bloco de código. Podemos lançar exceções verificadas ou não verificadas. A palavra-chave throw é usada principalmente para lançar exceções personalizadas. 

Sintaxe:



lançar Exemplo

Onde instância é um objeto do tipo Throwable (ou suas subclasses, como Exception).

Exemplo:

lançar new ArithmeticException('/ por zero');

Mas esta exceção, ou seja, a instância deve ser do tipo Arremessável ou uma subclasse de Arremessável

O fluxo de execução do programa para imediatamente após a instrução throw ser executada e o anexo mais próximo tentar bloco é verificado para ver se ele tem um pegar instrução que corresponde ao tipo de exceção. Se encontrar uma correspondência controlada, será transferido para essa instrução, caso contrário, o próximo anexo tentar bloco é verificado e assim por diante. Se não houver correspondência pegar for encontrado, o manipulador de exceção padrão interromperá o programa. 

travessia de ordem de correio de árvore binária

Exemplo: Este exemplo demonstra onde uma exceção é lançada, capturada e lançada novamente dentro de um método.

Java
class Geeks {  static void fun()  {  try {  throw new NullPointerException('demo');  }  catch (NullPointerException e) {  System.out.println('Caught inside fun().');  throw e; // rethrowing the exception  }  }  public static void main(String args[])  {  try {  fun();  }  catch (NullPointerException e) {  System.out.println('Caught in main.');  }  } } 

Saída
Caught inside fun(). Caught in main. 

Explicação: O exemplo acima demonstra o uso da palavra-chave throw para lançar explicitamente uma NullPointerException. A exceção é capturada dentro do diversão() método e relançado onde é capturado no método main().

Exemplo: Este exemplo demonstra uma exceção aritmética.

Java
// Throwing an arithmetic exception class Geeks {  public static void main(String[] args){  int numerator = 1;  int denominator = 0;  if (denominator == 0) {  // Manually throw an ArithmeticException  throw new ArithmeticException('Cannot divide by zero');  } else {  System.out.println(numerator / denominator);  }  } } 

Saída:

Hangup (SIGHUP)  
Exception in thread 'main' java.lang.ArithmeticException: Cannot divide by zero
at Geeks.main(Geeks.java:9)

Explicação: O exemplo acima demonstra uma exceção usando throw onde uma ArithmeticException é explicitamente lançada devido à divisão por zero.

Java lança

lança é uma palavra-chave em Java usada na assinatura de um método para indicar que esse método pode lançar uma das exceções de tipo listadas. O chamador desses métodos deve tratar a exceção usando um bloco try-catch. 

Sintaxe:

digite nome_método (parâmetros) lança lista_exceção

onde lista_de_exceções é uma lista separada por vírgulas de todas as exceções que um método pode lançar.

Em um programa, se houver uma chance de gerar uma exceção, o compilador sempre nos avisa sobre isso e devemos lidar com a exceção verificada. Caso contrário, obteremos um erro em tempo de compilação dizendo que a exceção não relatada XXX deve ser capturada ou declarada para ser lançada. Para evitar esse erro em tempo de compilação, podemos tratar a exceção de duas maneiras: 

tamanhos de fonte de látex
  1. Usando try catch
  2. Ao usar o lança palavra-chave

Podemos usar a palavra-chave throws para delegar a responsabilidade do tratamento de exceções ao chamador (pode ser um método ou JVM), então o método do chamador é responsável por tratar essa exceção.  

Exemplo 1: Exceção não tratada

Java
class Geeks {  public static void main(String[] args)  {  Thread.sleep(10000);  System.out.println('Hello Geeks');  } } 

Saída:

error: unreported exception InterruptedException; must be caught or declared to be thrown

Explicação: No programa acima, estamos recebendo um erro de tempo de compilação porque há uma chance de exceção se o thread principal for dormir, outros threads terão a chance de executar o método main() que causará InterruptedException. 

Exemplo 2: Usando throws para lidar com exceção

Java
class Geeks {  public static void main(String[] args)  throws InterruptedException  {  Thread.sleep(10000);  System.out.println('Hello Geeks');  } } 

Saída:

Hello Geeks

Explicação: No programa acima, usando a palavra-chave throws, tratamos do Exceção Interrompida e obteremos a saída como Olá Geeks.

Exemplo 3: Lançando uma exceção comthrows

Java
class Geeks {  static void fun() throws IllegalAccessException  {  System.out.println('Inside fun(). ');  throw new IllegalAccessException('demo');  }  public static void main(String args[])  {  try {  fun();  }  catch (IllegalAccessException e) {  System.out.println('Caught in main.');  }  } } 

Saída
Inside fun(). Caught in main. 

Explicação: O exemplo acima lançando uma IllegalAccessException de um método e manipulando-a no método principal usando um bloco try-catch.

Diferença entre arremesso e arremesso

As principais diferenças entre throw e throws em Java são as seguintes:

métodos de string

lançar

lança

É usado para lançar explicitamente uma exceção.

É usado para declarar que um método pode lançar uma ou mais exceções.

É usado dentro de um método ou bloco de código.

É usado na assinatura do método.

Ele pode lançar exceções verificadas e não verificadas.

É usado apenas para exceções verificadas. Exceções não verificadas não exigem lança

O método ou bloco lança a exceção.

O chamador do método é responsável por tratar a exceção.

Interrompe o fluxo atual de execução imediatamente.

Força o chamador a lidar com as exceções declaradas.

lançar new ArithmeticException('Erro');

public void myMethod() lança IOException {}