Gráfico de comparação
Base de Comparação | lançar | lança |
---|---|---|
Basic | A 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. |
Sintaxe | throw Throwable-instance; | return_type method_name (parameter-list) lança ExceptionClass_list { // corpo do método } |
Seguido por | A 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çada | A 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
- 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.
- 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.
- 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.