Diferença entre throw e throws em Java

Autor: Laura McKinney
Data De Criação: 1 Abril 2021
Data De Atualização: 12 Poderia 2024
Anonim
Diferença entre throw e throws em Java - Tecnologia
Diferença entre throw e throws em Java - Tecnologia

Contente


Throw and throws são as palavras-chave usadas no tratamento de exceções. o lançar A palavra-chave é usada para entregar manualmente a instância da exceção criada pelo programador para a JVM. o joga A palavra-chave usada para transferir a responsabilidade de manipular a exceção ocorreu no método para o método chamador. A diferença básica entre o throw e o throw é que a palavra-chave throw usa o objeto de exceção, enquanto a palavra-chave throws usa o nome das classes de exceção.

  1. Gráfico de comparação
  2. Definição
  3. Principais diferenças
  4. Conclusão

Gráfico de comparação

Base de comparaçãolançarjoga
BasicA palavra-chave throw transfere nosso objeto de exceção criado para a JVM manualmente.A palavra-chave throws é usada para delegar a responsabilidade do tratamento de exceções ao chamador do método.
SintaxeThrowable-instance;return_type method_name (lista de parâmetros) lança ExceptionClass_list
{
// corpo do método
}
Seguido porA palavra-chave throw é seguida pelo objeto de exceção.A palavra-chave throws é seguida pela lista das classes de exceção que podem ocorrer no método
Número de exceção lançadaA palavra-chave throw pode lançar uma única instância de exceção.A palavra-chave throws pode declarar várias classes de exceção separadas por vírgula.


Definição de arremesso

A palavra-chave "lançar”É usado para entregar nossa instância de exceção criada à JVM (Java Virtual Machine) manualmente. Se "throw" não for usado para lançar uma instância de exceção e a exceção ocorrer, o sistema de tempo de execução lançará internamente a instância de exceção para a JVM e o programa será encerrado de forma anormal. A forma geral da palavra-chave throw é:

jogue Throwable_instance;

Acima do Throwable_instance deve ser um objeto da classe Throwable. Tipos primitivos como int, float ou char e a instância de classe não lançável não podem ser lançados usando a palavra-chave throw.

Vamos dar um exemplo para entender a palavra-chave throw.

Teste de classe {Public static void main (String args) {throw new ArithmeticException ("/ by zero"); }}

No código acima, a palavra-chave throw lança uma instância da classe Exception "ArithmeticException". Se a palavra-chave throw não tivesse sido usada, o método main () teria criado internamente um objeto de exceção entregue à JVM.


Os pontos a serem lembrados sobre a palavra-chave throw:

  • Ele entrega o objeto de exceção manualmente para a JVM.
  • É melhor usado para as exceções definidas pelo usuário ou exceções personalizadas.
  • Se a memória não estiver alocada para o objeto de exceção lançado pela palavra-chave throw, ocorrerá uma exceção de tempo de execução, NullPointerException.
  • A palavra-chave throw interrompe a execução do programa imediatamente após sua ocorrência. não podemos escrever diretamente nenhuma declaração após a declaração throw. Se escrevermos qualquer grampo diretamente após a instrução throw, o compilador mostrará uma instrução de erro inacessível durante a compilação.
  • Somente objetos da classe Throwable podem ser lançados usando a palavra-chave throw. Se o objeto lançado não for um objeto da classe Throwable, obtemos um erro de tempo de compilação “Tipo incompatível encontrado. . necessário java.lang.Throwable ”

Nota:

A palavra-chave throw é usada em C ++, JAVA, C #, para lançar manualmente uma exceção.

Definição de arremessos

O "jogaA palavra-chave ”é usada para delegar a responsabilidade de manipular a exceção ocorrida no método, ao seu método de chamada. O método de chamada é responsável por manipular a exceção, pois pode ser qualquer outro método ou JVM. Ele declara a lista das classes de exceção que podem ocorrer no método

O uso da palavra-chave throws convence o compilador de que a exceção ocorrida no método deve ser tratada pelo método chamador, portanto, nenhum erro de compilação ocorre. Mas, o método chamador deve manipular a exceção ou delegar a responsabilidade de manipular a exceção ao seu método de hierarquia. Quando a exceção de tempo de execução ocorre, mesmo após o uso da palavra-chave throws, ela não impede o encerramento anormal do programa. Se o método de chamada for main (), a JVM por padrão manipulará a exceção.

A forma geral da palavra-chave throws é:

return_type method_name (lista de parâmetros) lança exceptionClass_list {// corpo do método}

Podemos ver que a palavra-chave throws aparece após a assinatura do método e pode conter a lista de classes de exceção que podem ocorrer no método. A lista das classes de exceção gravadas após o lançamento da palavra-chave é separada pela vírgula.

Vamos dar um exemplo para entender a palavra-chave throws.

calss Teste {public static void main (String args) lança InterruptedException {thread sleep (10000); }}

No código acima, o thread principal é suspenso por algum tempo usando o método sleep (). Agora, quando o método principal estiver em suspensão, é possível que os outros threads interrompam o thread principal. Porém, a palavra-chave throws é usada após a assinatura do método main () para que o programa seja compilado facilmente. A palavra-chave throws está declarando a classe de exceção verificada InterruptedException. Agora, se qualquer outro encadeamento interromper o encadeamento principal durante o tempo de execução, a palavra-chave throws entregaria essa exceção ao chamador do método main (), que é JVM. A JVM encerraria o programa de forma anormal.

Os pontos a serem lembrados sobre a palavra-chave throws:

  • A palavra-chave throws é usada apenas para declarar as classes de exceção verificadas. O uso da palavra-chave throws para uma exceção não verificada não tem impacto.
  • Se o método não quiser manipular a exceção por si só, delegará essa exceção ao método de chamada dessa classe usando a palavra-chave throws.
  • Seu uso apenas permite uma compilação suave do programa.
  • Se ocorrer uma exceção no tempo de execução, o programa será encerrado de forma anormal, mesmo após o uso da palavra-chave throws.
  • É recomendável usar o bloco try / catch para a finalização normal do programa se ocorrer uma exceção no tempo de execução.

Nota:

A palavra-chave lança usada apenas em Java. C ++ e C # não usam a palavra-chave throws.

  1. A palavra-chave throw, entrega a responsabilidade do tratamento de exceções para a JVM manualmente, enquanto a palavra-chave lança, entrega a responsabilidade do tratamento de exceções para o método de chamada do código em que ocorreu uma exceção.
  2. A palavra-chave throw é seguida pelo objeto de exceção que é entregue à JVM. Por outro lado, throws keyword é seguida pelas classes de exceção que podem ocorrer no método.
  3. A palavra-chave throw pode lançar um único objeto de exceção por vez, enquanto que a palavra-chave throws pode declarar várias classes de exceção separadas por vírgula por vez.

Conclusão:

A palavra-chave throw é melhor usada para a exceção customizada. O bloco try / catch é melhor para lidar com as exceções em comparação com a palavra-chave throws.