"Olá, amigo!"

"Oi, Ellie! Como vai a vida?"

"Excelente, obrigado. Como você está?"

"Ótimo, esta manhã toneladas de coisas novas foram explicadas para mim."

"Bem, isso é ótimo. Você não está cansado?"

"Sim, tem isso. Estou um pouco cansado."

"Então você teve sorte. Eu queria cobrir um tópico grande e complexo hoje, mas no último minuto mudei de ideia e decidi cobrir um tópico pequeno e fácil."

"Pequeno e fácil? Estou pronto."

"Hoje vamos examinar o tópico de Exceções em detalhes."

"Você está falando sobre tratamento de erros?"

"Você não deve pensar em exceções como erros. Exceções são mais como relatórios de que 'algo inesperado aconteceu'. Com base nesses relatórios, você pode propor ações alternativas."

"É tudo sobre métodos.  Quando você chama um método, ele promete fazer o que foi chamado para fazer. "

"Quando um método, por qualquer motivo, não pode fazer o que foi chamado para fazer, ele deve informar o chamador."

"Em outras palavras, a pior coisa que pode acontecer é um método não fazer seu trabalho e não contar a ninguém sobre isso. Nada poderia ser pior do que isso. Você perde o controle da situação quando isso acontece. "

"Quando você é um novo programador, parece que você apenas chama métodos e eles certamente farão o que você pediu."

"Quando você é um programador experiente, sabe que pode haver dezenas de fatores que afetam a capacidade de um método fazer seu trabalho e que há muitos casos que podem impedir que um método conclua seu trabalho."

"Do ponto de vista do programador, é mil vezes melhor se um programa terminar quando encontrar um erro do que se o programa encontrar um erro e continuar funcionando (incorretamente) sem que o usuário perceba o que aconteceu."

"Então o programa mostrando algo errado pode ser pior do que se o programa fechasse e perdesse todos os dados?"

"O que fez você pensar que o programa está simplesmente mostrando algo incorreto? Talvez o programa tenha muitos bugs e todos os seus dados sejam irremediavelmente perdidos? Suponha que você tenha digitado um texto por 3 horas, mas nada disso será salvo porque um erro que ocorreu após apenas dois minutos."

"Quando um programador iniciante encontra exceções, ele fica frustrado."

"Mas, na realidade, as exceções revelam todos os cenários possíveis que ele deveria ter previsto, mas não previu."

"Você pode optar por não lidar com exceções e isso faria de você um programador ruim. Mas se seus métodos não lançarem exceções, então você não é um programador - porque você falhou em entender esta simples verdade:"

"um método faz o que foi escrito para fazer ou lança uma exceção. Não há terceira opção!"

"Ok, eu acredito em você. Prometo usar exceções."

"Ótimo. Então deixe-me falar sobre a hierarquia de exceções:"

Hierarquia de exceção, erros - 1

"A hierarquia de exceção é baseada em quatro classes."

"A classe base mais baixa é Throwable ."

" As classes Error e Exception o herdam."

" RuntimeException herda Exception ."

"A classe Error é a classe base para erros de JVM, como StackOverFlow , OutOfMemory , …"

"Um programa geralmente não consegue se recuperar de tais erros, o que o leva a encerrar."

"Na verdade, o que pode ser feito se não houver memória suficiente para o programa continuar rodando normalmente ou se houver um estouro de pilha?"

" Exception é a classe base para todas as exceções comuns lançadas por um programa.  RuntimeException é um tipo especial de Exception que possui regras ligeiramente diferentes."

"O que eles são?"

"Isso é exatamente o que vou explicar agora."

"Como você provavelmente se lembra, as exceções se enquadram em duas categorias: marcadas e não verificadas ."

"Se um método lança exceções verificadas , o método que o chama deve agrupar a chamada em um bloco try-catch . Bem, isso ou relançar a exceção (para seu chamador) indicando claramente os lançamentos na assinatura do método."

"Estas regras/restrições não se aplicam a exceções não verificadas."

"Portanto, todas as exceções que herdam Exception são consideradas verificadas. Exceto as exceções que herdam RuntimeException, que são consideradas não verificadas."

"Uh-huh. Eu me lembro de você me dizendo algo assim antes."

"Amigo! Eles perguntam sobre a hierarquia de exceções em todas as entrevistas . Vou repetir - todas as entrevistas . Você precisa conhecer esse tópico perfeitamente."

"OK. Vou ler tudo de novo e descobrir. Obrigado por me ajudar, Ellie."