Qualquer código Java pode lançar exceções, como: código escrito por si mesmo, codificar o pacote de ambiente de desenvolvimento Java ou o sistema de tempo de execução Java. Não importa quem seja, você pode fazer uma exceção através da declaração de arremesso de java. Qualquer exceção lançada do método deve ser usada com a cláusula de arremessos.
1. Exceção de arremesso de arremesso
Se um método pode ter uma exceção, mas não tiver a capacidade de lidar com essa exceção, você pode usar a cláusula de arremesso para declarar a exceção lançada na declaração do método. Por exemplo, um carro pode falhar ao correr e o próprio carro não pode lidar com essa falha, então deixe o motorista lidar com ele.
A instrução de arremesso é usada para declarar o tipo de exceção a ser lançado quando o método é definido. Várias exceções podem ser divididas usando vírgulas. O formato de sintaxe da declaração de arremessos é:
MethodName lança Exception1, Exception2, .., exceção
{
}
Os arremessos após o nome do método Exception1, Exception2,…, Exceptionn é a lista de exceções a serem jogadas. Quando um método lança uma lista de exceções de exceções, o método não lida com exceções desses tipos e seus tipos de subclasse, mas será jogado no método que chama o método e será tratado por ele. Por exemplo:
importar java.lang.Exception; (String [] args) {// Método principal tente {// Try Declarent lida com informações de exceção pop (); Exceção jogada "); // Informações de exceção de saída}}}
Depois de lançar a exceção ao chamador usando a palavra -chave de arremesso, se o chamador não quiser lidar com a exceção, você poderá continuar jogando -a, mas no final deve haver um chamador que possa lidar com a exceção.
O método POP não lida com a exceção NegativearRaysizeException, mas é tratado pela função principal.
A regra para os arremessos lançar exceções:
1) Se for uma exceção desmarcada, isto é, erro, tempo de execução da USCECCECTION ou suas subclasses, você pode declarar a exceção a ser lançada sem usar a palavra -chave arremessos, e a compilação ainda passará sem problemas, mas será executada pelo sistema durante Tempo de execução.
2) Quaisquer exceções verificadas que possam ser jogadas pelo método devem ser declaradas. Ou seja, se um método pode ter uma exceção verificável, ele será capturado com uma instrução Try-Catch ou declarado com uma cláusula de arremesso, caso contrário, causará um erro de compilação.
3) Somente quando uma exceção é lançada, o chamador do método deve lidar ou refazer a exceção. Quando o chamador de método não conseguir lidar com a exceção, ele deve continuar jogando -o em vez de engoli -lo inteiro.
4) O método de chamada deve seguir as regras de manuseio de exceção e declaração de exceção verificável. Se um método for substituído, exceções diferentes do método substituído não poderão ser declaradas. Qualquer exceção declarada deve ser uma subclasse semelhante ou da exceção declarada pelo método substituído.
Por exemplo:
A base para determinar que uma exceção pode ocorrer em um método é a seguinte:
1) Há uma declaração de arremesso no método. Por exemplo, o bloco de código de captura do método de método 7 () acima possui uma instrução de arremesso.
2) Outros métodos são chamados e outros métodos usam a cláusula de arremesso para declarar alguma exceção a ser lançada. Por exemplo, o método Method3 () chama o método Method1 (), e o método Method1 () declara que uma ioException é lançada, portanto, uma ioexception pode ocorrer no método Method3 ().
2. Use Throw to Throw Exception
O arremesso sempre aparece no corpo da função e é usado para lançar uma exceção do tipo jogável. O programa terminará imediatamente após a declaração de arremesso, a declaração depois que não pode ser executada e, em seguida, em todos os blocos de tentativa que a contêm (talvez na função de chamada de nível superior) procure blocos de tentativa que contenham a cláusula de captura que a corresponda do dentro de fora.
Sabemos que as exceções são objetos de instância da classe Exception e podemos criar objetos de instância da classe Exception Class a serem lançados através da declaração de arremesso. O formato de sintaxe desta afirmação é:
lançar novo nome de exceção;
Por exemplo, jogue um objeto de exceção da classe IoException:
Jogue nova ioexception;
Deve -se notar que lança apenas objetos de instância que podem lançar a classe lançável ou subclasses. A operação a seguir está incorreta:
lançar uma nova string ("Exception");
Isso ocorre porque a string não é uma subclasse da classe jogável.
Se uma exceção de verificação for lançada, você também deve declarar o tipo de exceção de que o método pode lançar o cabeçalho do método. O chamador deste método também deve verificar o manuseio da exceção.
Se todos os métodos lançarem a camada de exceção adquirida por camada, a JVM acabará por processá -la e o processamento também é muito simples, que é imprimir a mensagem de exceção e as informações da pilha. Se um erro ou tempo de execução for lançado, o chamador do método tem a opção de lidar com a exceção.
teste de pacote; 0 LONGA NOVA MYEXCEIRA ("O divisor não pode ser um número negativo"); ; .out.println (e. getMessage ()); Catch (exceto em e) {// lidera outras exceções System.out.println ("Outra exceção ocorreu no programa"); Mensagem da String;