pergunta
Eu encontrei um problema hoje. No código a seguir, quando uma exceção de tempo de execução for lançada, o código subsequente ainda será executado? Preciso adicionar uma declaração return após a exceção?
public void add (int index, e elemento) {if (size> = elements.length) {tiro novo RuntimeException ("A tabela de pedidos está cheia, não pode ser adicionada"); //retornar; // é necessário? } ....}
Para responder a essa pergunta, escrevi algumas partes do código para testá -lo, e os resultados são os seguintes:
// Código 1Public estático void test () lança exceção {lança nova exceção ("parâmetro fora dos limites"); System.out.println ("após a exceção"); // Erro de compilação, "Declaração inacessível"} // Código 2try {lança nova exceção ("parâmetro fora dos limites"); } catch (Exceção e) {e.printStackTrace ();} System.out.println ("após a exceção"); // pode ser executado // Código 3IF (true) {lança nova exceção ("parâmetro fora dos limites"); } System.out.println ("Após a exceção"); // A exceção é lançada, não será executadaResumir:
Se uma exceção for lançada antes de um pedaço de código e a exceção não for capturada, este pedaço de código gerará um erro de tempo de compilação "declaração inacessível". Como código 1
Se uma exceção for lançada antes de um pedaço de código, e essa exceção será capturada por try...catch , se nenhuma nova exceção for lançada na declaração catch neste momento, o código poderá ser executado, caso contrário, o mesmo que o Artigo 1. Como o código 2
Se uma exceção for lançada em uma declaração condicional, o programa poderá ser compilado, mas as instruções subsequentes não serão executadas. Como código 3
Resuma também a diferença entre a exceção de tempo de execução e a exceção não-ruptura:
Exceções de tempo de execução são exceções da classe RuntimeException e suas subclasses, e são exceções não verificadas, como NullPointerException , IndexOutOfBoundsException etc. Como essas exceções são exceções do sistema e não podem ser tratadas, como problemas de rede;
Ou é um erro lógico do programa, como uma exceção de ponteiro nulo; A JVM deve parar de funcionar para corrigir esse erro, para que a exceção do tempo de execução possa ser tratada sem ser processada (pegando ou vomitando, é claro, também pode ser tratado) e a JVM lida com ela em si. Java Runtime catch automaticamente RuntimeException do throw do programa, depois interrompe o thread e imprimirá a exceção.
Exceções que não são de áreas não são exceções que não sejam RuntimeException . Todos pertencem à classe Exception e suas subclasses no tipo, e são exceções verificadas. Exceções não intermediárias devem ser processadas (pegando ou vomitando) e, se não for processado, o programa terá um erro de compilação. De um modo geral, Exception escrita na API que throws não é RuntimeException .
Exceções comuns de tempo de execução:
Exceções comuns não rupturas:
Ok, o acima é o conteúdo inteiro deste artigo. Espero que o conteúdo deste artigo seja de ajuda para estudar ou trabalhar de todos. Se você tiver alguma dúvida, pode deixar uma mensagem para se comunicar.