Tratamento e classificação de exceções em java

Anormal: refere-se a várias condições inesperadas, como: arquivo não encontrado, falha de conexão de rede, parâmetros ilegais, etc. Uma exceção é um evento que ocorre durante a execução do programa e interfere no fluxo normal de instrução. Java descreve uma variedade de exceções diferentes por meio de muitas subclasses da classe Throwable na API. Portanto, as exceções Java são todos objetos, instâncias de subclasses Throwable que descrevem condições de erro que aparecem em um trecho de código. Quando a condição é gerada, o erro gerará uma exceção.

1. Classificação de anomalias

Insira a descrição da imagem aqui

Throwable é a superclasse de todos os erros ou exceções na linguagem Java. A próxima camada é dividida em Erro e Exceção

1. A classe Error refere-se a erros internos e erros de exaustão de recursos do sistema de tempo de execução java. O aplicativo não lançará objetos deste tipo. Se tal erro ocorrer, além de avisar ao usuário, resta tentar fazer com que o programa seja encerrado com segurança.

Erro: É um erro que o programa não consegue resolver, o que significa um sério problema de execução da aplicação. A maioria dos erros não tem nada a ver com as ações realizadas pelo gravador do código, mas representam problemas com a JVM (Java Virtual Machine) quando o código está em execução. Por exemplo, um erro de execução da máquina virtual Java (Virtual MachineError), quando a JVM não tem mais os recursos de memória necessários para continuar a operação, um OutOfMemoryError ocorrerá. Quando essas exceções ocorrem, a Java Virtual Machine (JVM) geralmente escolhe a terminação do encadeamento

2. A exceção tem duas ramificações, uma é RuntimeException, como NullPointerException, ClassCastException; a outra é CheckedException, como IOException e SQLException, causada por erros de E / S.

Exceções de tempo de execução: todas as exceções da classe RuntimeException e suas subclasses, como NullPointerException (exceção de ponteiro nulo), IndexOutOfBoundsException (exceção de subscript out-of-bounds), etc. Essas exceções não são verificadas e o programa pode escolher capturar e manipular isso ou não. Essas exceções são geralmente causadas por erros de lógica do programa, e o programa deve evitar tais exceções tanto quanto possível de uma perspectiva lógica.

O recurso da exceção de tempo de execução é que o compilador Java não a verificará. Ou seja, quando esse tipo de exceção pode ocorrer no programa, mesmo que não seja capturado com uma instrução try-catch ou acionado pela cláusula throws, ele será Compilação aprovada.

Exceção de não tempo de execução (exceção de compilação): é uma exceção diferente de RuntimeException, que pertence à classe Exception e suas subclasses. Do ponto de vista da sintaxe do programa, é uma exceção que deve ser tratada.Se não for tratada, o programa não pode ser compilado. Como IOException, SQLException, etc. e exceções Exception definidas pelo usuário, geralmente não personalizam a exceção de verificação.

2. Tratamento de exceções

1. Ao encontrar um problema, ele não realiza um tratamento específico, mas continua
 lançando exceções ao chamador.Existem três formas, uma é lançar, uma lançar e a outra é automaticamente lançada pelo sistema.

Nota:
 a diferença entre lançar e lançar:

(1) Posições diferentes: throws são usados ​​em funções, seguidas por classes de exceção, que podem ser seguidas por múltiplas; enquanto throws são usados ​​em funções, seguidas por objetos de exceção.
(2) Funções diferentes: throws são usados ​​para declarar exceções, de modo que o chamador apenas conheça os possíveis problemas da função e possa fornecer métodos de pré-processamento; throw lança objetos de problema específicos e executa para lançar, a função acabou. Pule para o chamador e lance o objeto de problema específico para o chamador. Ou seja, quando a instrução throw existe independentemente, não defina outras instruções abaixo porque elas não podem ser executadas.
(3) Throws representa a possibilidade de exceções, e essas exceções não ocorrem necessariamente; throw significa lançar exceções, e executar throw deve lançar algum tipo de objeto de exceção.
(4) Ambas são formas passivas de lidar com exceções (negatividade aqui não significa que essa forma não seja boa), apenas lança ou pode lançar exceções, mas a função não tratará a exceção, a exceção real é tratada pela função O superior camada de processamento de chamadas.

2. Método de tratamento direcionado: captura de exceção

Try{
    
    
//有可能发生异常的代码
}
 Catch(异常类 变量)
{
    
    
// 处理异常的代码,捕获
}
finally{
    
    
//一定会被执行的代码
}


Três, a diferença entre RuntimeException e CheckedException

1. A diferença entre
  RuntimeException e CheckedException RuntimeException: ao definir o método, não há necessidade de declarar que RuntimeException será lançada e não há necessidade de capturar esta RuntimeException ao chamar este método; em suma, as exceções não verificadas não precisam tentar ... pega ... ou lança mecanismo para lidar com.
  
  CheckedException: Ao definir o método, você deve declarar todas as exceções que podem ser lançadas; ao chamar este método, você deve capturar sua exceção verificada ou deve passar a exceção.
  
  Resumindo, um método deve declarar todas as exceções verificadas que podem ser lançadas; as exceções não verificadas são incontroláveis ​​(erro) ou devem ser evitadas (RuntimeException). Se o método não declarar todas as exceções verificadas que podem ocorrer, o compilador fornecerá uma mensagem de erro.

Acho que você gosta

Origin blog.csdn.net/weixin_49005845/article/details/110872695
Recomendado
Clasificación