O que é a classe Throwable? A classe Throwable é a superclasse de todos os erros ou exceções na linguagem Java. É uma classe comum que integra todas as exceções. Sua função é extrair as informações de erro armazenadas na pilha.
A classe Error é uma subclasse da classe Throwable, incluindo exceções de sistema, exceções de máquina virtual e outros problemas que não podem ser evitados pelos usuários.
A classe Exception também é uma subclasse da classe Throwable. É uma exceção que pode ser tratada pelo próprio programa. Ela é dividida em exceções de tempo de execução (marcadas) e exceções de tempo de execução (desmarcadas). As exceções de tempo de execução podem ou não ser tratadas;
Exceções de tempo de execução são todas exceções da classe RuntimeException e suas subclasses, como NullPointerException, IndexOutOfBoundsException, etc. Essas exceções não são verificadas e podem ser capturadas ou não processadas no programa. Estas exceções são geralmente causadas por erros lógicos do programa, e o programa deve tentar evitar a ocorrência de tais exceções de uma perspectiva lógica.
Quando ocorre uma RuntimeException, não precisamos lidar com ela e a máquina virtual geralmente assume o controle.
Após a ocorrência de uma exceção de tempo de execução, se a exceção não for capturada e processada (ou seja, não houver captura), o sistema lançará a exceção até a camada superior. Se for multithread, ela será lançada por. Thread.run(). Se for de thread único, será lançado por Thread.run(). Após o lançamento, se for um thread, o thread sairá. Se a exceção for lançada pelo programa principal, todo o programa será encerrado. As exceções de tempo de execução são subclasses da classe Exception e também possuem características de exceções gerais, ou seja, podem ser tratadas por blocos catch. Acontece que muitas vezes não lidamos com isso. Ou seja, se você não lidar com exceções de tempo de execução, depois que ocorrer uma exceção de tempo de execução, o thread será encerrado ou o programa principal será encerrado.
Se não quiser encerrar, você deverá capturar todas as exceções de tempo de execução e nunca deixar esse thread de processamento sair. Se dados anormais aparecerem na fila, o processamento normal deverá ser descartar os dados anormais e então registrar o log. A existência de dados anormais não deverá afetar o processamento subsequente de dados normais.
Exceções que não são de tempo de execução são exceções diferentes de RuntimeException e todas pertencem à classe Exception e suas subclasses. Por exemplo: IOException, SQLException, etc. e exceções definidas pelo usuário. Para esse tipo de exceção, o compilador Java nos obriga a capturar e tratar essas exceções, caso contrário o programa não será compilado. Portanto, diante desse tipo de exceção, gostemos ou não, temos que escrever muitos blocos catch para lidar com possíveis exceções.