Java JOON: Excepção de arremesso
O programa pode usar a declaração de arremesso para lançar exceções claras. A forma usual de uma declaração de arremesso é a seguinte:
arremesso de arremesso;
Aqui, o ThrowableInstance deve ser um objeto do tipo de classe jogável ou do tipo de subclasse lançável. Tipos simples, como int ou char, e classes não empregáveis, como string ou objeto, não podem ser usadas como exceções. Existem duas maneiras de obter objetos lançáveis: use parâmetros na cláusula de captura ou criá -los com o novo operador.
A execução do programa para imediatamente após a declaração de arremesso; O bloco de tentativa mais fechado é usado para verificar se ele contém uma declaração de captura que corresponde ao tipo de exceção. Se um bloco correspondente for encontrado, o controle liga para a instrução; Se nenhum bloco de captura correspondente for encontrado, o manipulador de exceção padrão interrompe a execução do programa e imprime o rastreamento da pilha.
A seguir, é apresentado um programa de exemplo que cria e lança exceções.
// Demonstrar throw.class throwdemo {estático void Demoproc () {Try {throw new NullPointerException ("Demo"); / / Rethrow the Exception}} public static void main (string args []) {try {Demoproc (); O programa tem duas oportunidades para lidar com o mesmo erro. Primeiro, Main () configura um relacionamento de exceção e depois chama o Demoproc (). O método Demoproc () configura outro relacionamento de manuseio de exceção e imediatamente lança uma nova instância do NullPointerException, que é capturada na próxima linha. A exceção é então jogada novamente. Aqui está o resultado da saída:
Pego dentro de Demoproc.recaught: java.lang.nullpointerException: demonstração
O programa também explica como criar objetos de exceção padrão em Java, prestando atenção especial à seguinte linha:
lançar nova nullpointerException ("demonstração");
Aqui, o novo é usado para construir uma instância do NullPointerException. Todas as exceções de tempo de execução internas do Java têm dois construtores: não possui parâmetros e um tem um parâmetro de string. Quando o segundo formulário é usado, o parâmetro especifica a sequência que descreve a exceção. Se o objeto for usado como um parâmetro para print () ou println (), a string será exibida. Isso também pode ser alcançado chamando getMessage (), que é definido por arremesso.
A cláusula Java Throws <r /> se um método puder causar uma exceção, mas não lidar com isso, deve especificar esse comportamento para que o chamador do método possa se proteger sem a exceção. Para fazer isso, você pode incluir uma cláusula de arremessos na declaração do método. Uma cláusula de arremesso lista todos os tipos de exceção que um método pode lançar. Isso é necessário para todas as exceções dos tipos, exceto erros ou tempo de execução e suas subclasses. Todos os outros tipos de exceções que um método pode lançar devem ser declarados na cláusula de arremessos. Não fazer isso resultará em um erro de compilação.
Aqui está uma forma comum de uma declaração de método contendo uma cláusula de arremesso:
Tipo Method-Name (Parameter-List) lança a lista de exceção {// Body of Method}Aqui, a lista de exceção é uma lista de exceção segmentada por vírgula que o método pode lançar.
Aqui está um exemplo incorreto. Este exemplo tenta lançar uma exceção que ele não pode pegar. Como o programa não especifica uma cláusula de arremesso para declarar o fato, o programa não será compilado.
// Este programa contém um erro e não compilará. String args []) {tlone (); Para compilar o programa, dois lugares precisam ser alterados. Primeiro, você precisa declarar o Throne () para aumentar uma exceção ilegal de acesso. Segundo, Main () deve definir uma instrução Try/Catch para capturar a exceção. Os exemplos corretos são os seguintes:
// Isso agora está correto. ) {tente {tlone (); Aqui estão os resultados da saída do exemplo:
Interior WronoNecaught java.lang.illegalaccescessception: demonstração