Recomendado, 2024

Escolha Do Editor

Diferença entre throw e throws em Java

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

Gráfico de comparação

Base de Comparaçãolançarlança
BasicA palavra-chave throw handover 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.
Sintaxethrow Throwable-instance;return_type method_name (parameter-list) lança ExceptionClass_list
{
// corpo do método
}
Seguido porA palavra-chave throw é seguida pelo objeto exception.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 uma vírgula.

Definição de lance

A palavra-chave “ throw ” é usada para entregar a instância de exceção criada para a 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 finalizará de forma anormal. A forma geral da palavra-chave throw é:

 throw Throwable_instance; 

Acima, a 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 o lance da palavra-chave.

 Teste de Classe {public static void main (String [] args) {lançar nova ArithmeticException ("/ por 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, então, 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 transfere 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 impede a execução do programa imediatamente após sua ocorrência. nós não podemos escrever diretamente qualquer declaração após a instrução throw. Se escrevermos qualquer condição diretamente após a instrução throw, o compilador mostrará uma instrução error, inacessível durante a compilação.
  • Apenas 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, obteremos um erro de tempo de compilação “Incompatible type found. . 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 lances

A palavra-chave “ throws ” é usada para delegar a responsabilidade de manipular a exceção ocorrida no método, para seu método de chamador. O método chamador é responsável por manipular a exceção, pode ser qualquer outro método ou JVM. 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 manipulada pelo método do chamador, portanto, nenhum erro de compilação ocorre. Mas, o método de chamador deve manipular a exceção ou delegar a responsabilidade de manipular a exceção para 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 a finalização anormal do programa. Se o método do chamador for main (), a JVM padrão manipula a exceção.

A forma geral da palavra-chave throws é:

 return_type method_name (parameter-list) 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 escritas depois que a palavra-chave é lançada é separada pela vírgula.

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

 calss Test {public estático void main (String [] args) gera InterruptedException {thread sleep (10000); }} 

No código acima, o thread principal é feito para dormir por algum tempo usando o método sleep (). Agora, quando o método principal está em suspensão, é possível que os outros threads possam interromper o thread principal. Mas, a palavra-chave throws é usada após a assinatura do método main (), portanto, o programa seria 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 método chamador main (), que é JVM. A JVM terminaria o programa de forma anormal.

Os pontos para lembrar sobre joga palavra-chave:

  • A palavra-chave throws é usada apenas para declarar as classes de exceção marcadas. 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ó, ele delegará essa exceção ao método de chamador dessa classe usando a palavra-chave throws.
  • Seu uso só permite a compilação suave do programa.
  • Se ocorrer uma exceção no tempo de execução, o programa terminará de forma anormal, mesmo após o uso da palavra-chave throws.
  • Recomenda-se usar o bloco try / catch para 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.

Principais diferenças entre lançamentos e lances

  1. A palavra-chave throw, entrega a responsabilidade da manipulação de exceção para a JVM manualmente enquanto, a palavra-chave lança, transfere a responsabilidade da manipulação de exceção para o método chamador do código onde ocorreu uma exceção.
  2. A palavra-chave throw é seguida pelo objeto de exceção que é entregue à JVM. Por outro lado, a palavra-chave throws é 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 a palavra-chave throws pode declarar várias classes de exceção separadas por uma 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 quando comparado a palavra-chave throws.

Top