Subclasse de exceção embutida
No pacote padrão java.lang, Java define várias classes de exceção. Alguns deles foram usados nos exemplos anteriores. Essas exceções geralmente são subclasses da classe RuntimeException padrão. Como o java.lang é realmente introduzido por todos os programas Java, a maioria das exceções derivadas da RunTimeException está disponível automaticamente. Além disso, eles não precisam ser incluídos na lista de arremessos de qualquer método. Em Java, isso é chamado de exceção sem controle. Porque o compilador não verifica se um método lida ou lança essas exceções. Exceções desmarcadas definidas em java.lang estão listadas na Tabela 1. A Tabela 2 lista exceções que devem ser incluídas na lista de métodos definidos por java.lang, se esses métodos puderem gerar uma das exceções, mas não conseguirem lidar com isso por si mesmas. Estes são chamados de exceções verificadas. Java define vários outros tipos de exceção relacionados a diferentes classes de bibliotecas.
Tabela 1: Subclasse de exceção desmarcada definida em java.lang em java
Tabela 2: Verifique a exceção definida em java.lang
Crie sua própria subclasse de exceção usando Java
Embora o manuseio de exceção interno da Java, que seja o manuseio de exceções mais comuns, convém criar seu próprio tipo de exceção para lidar com os casos especiais que você está aplicando. Isso é muito simples: basta definir uma subclasse de exceção (a exceção é obviamente uma subclasse de arremesso). Suas subclasses não precisam realmente fazer nada - a presença deles no sistema de tipos permite usá -los como exceções.
A própria classe de exceção não define nenhum método. Obviamente, herda alguns dos métodos fornecidos pela arremesso. Portanto, todas as exceções, incluindo aquelas que você cria, podem obter o método definido por arremesso. Esses métodos são mostrados na Tabela 3. Você também pode substituir um ou mais desses métodos na classe de exceção que você cria.
Tabela 3 Métodos definidos por jogável
O exemplo a seguir declara uma nova subclasse de exceção, que é usada como um sinal para um erro no método. Ele sobrecarrega o método ToString (), para que a descrição da exceção possa ser exibida com println ().
// Este programa cria um tipo de exceção personalizado. } classe ExceptionDemo {estático void computação (int a) lança myException {System.out.println ("chamado compute (" + a + ")"); .println ("Exit Normal"); e);
Este exemplo define uma subclasse da exceção myException. Essa subclasse é muito simples: contém apenas um construtor e um método ToString () sobrecarregado que exibe outliers. A classe ExceptionDemo define um método compute (). Este método lança um objeto MyException. Esta exceção é levantada quando o parâmetro inteiro de compute () é maior que 10.
O método principal () configura um manipulador de exceção para a MyException e, em seguida, chama compute () com um valor legal e um valor ilegal para exibir diferentes caminhos de execução através do código. Aqui estão os resultados:
Chamado computação (1) computação de saída normal (20) pegou myException [20]