Curso Tratamento de Exceções em Java

Overview

TRATAMENTO DE EXCEÇÕES EM JAVA

Curso que apresenta conceitos introdutórios sobre como podemos identificar e tratar Exceptions na linguagem Java. Curso este ministrado por mim em nome da DIGITAL INNOVATION ONE 🧡 💛 e disponibilizado de forma gratuita para a comunidade dos desenvolvedores Java.

🛑 Pré-requistos

  • Java JDK 8 ou superior
  • IDE para desenvolvimento Java
  • Conhecimento BÁSICO em OOP
  • Estar disposto a aprender

📚 Ementa

  1. Visão Geral
  2. Unchecked Exception
  3. Checked Exception
  4. Exception Personalizada

Visão Geral

  • Exceção é um evento que interrompe o fluxo normal de processamento de uma classe.
  • O uso correto de exceções torna o programa mais robusto e confiável.
  • Com o tratamento de exceções, um programa pode continuar executando depois de lidar com um problema.
  • Importante: Incorpore sua estratégia de tratamento de exceções no sistema desde o princípio do processo de projeto. Pode ser difícil incluir um tratamento de exceções eficiente depois que um sistema foi implementado.

Error:

Usado pela JVM que serve para indicar se existe algum problema de recurso do programa, tornando a execução impossível de continuar.

Unchecked (Runtime):

Exceptions que PODEM ser evitados se forem tratados e analisados pelo desenvolvedor.

Checked Exception:

Exceptions que DEVEM ser evitados etratados pelo desenvolvedor para o programa funcionar.
amoTu

Hierarquia Exceptions

Palavras Reservadas:

  • try, catch, finally: Cada uma dessas palavras, juntas, definem blocos para o tratamento de exceções.
  • throws: Declara que um método pode lançar uma ou várias exceções.
  • throw: Lança explicitamente uma exception.

🔸 Error

  • Usado pela JVM, serve para indicar quando existe algum problema de recurso do programa, tornando a execução impossível de continuar.
  • O “Erro” é algo que não pode mais ser tratado, ao contrário da “Exceção” que trata seus erros, pois todas as subclasses de Exception (menos as subclasses RuntimeException) são exceções que obrigatóriamente devem ser tratadas.

🔸 Unchecked Exception

  • Herdam da classe RuntimeException ou da classe Error.
  • O compilador não verifica o código para ver se a exceção foi capturada ou declarada.
  • Se uma exceção não-verificada ocorrer e não tiver sido capturada, o programa terminará ou executará com resultados inesperados.
  • Em geral, podem ser evitadas com uma codificação adequada.

🔸 Checked Exception

  • As exceções que são herdadas da classe Exception, mas não de RuntimeException.
  • O compilador impõe um requisito do tipo "capturar ou declarar".
  • O compilador verifica cada chamada de método e declaração de método para determinar se o método lança (throws) exceções verificadas.
  • Se lançar, o compilador assegura que a exceção verificada é capturada ou declarada em uma cláusula throws.
  • Caso não capturada nem declarada, ocorre um erro de compilação.

🔸 Exception Personalizada

  • Programadores podem achar útil declarar suas próprias classes de exceção.
  • Essas Exceptions são específicas aos problemas que podem ocorrer quando outro programador empregar suas classes reutilizáveis.
  • Uma nova classe de exceção deve estender uma classe de exceção existente que assegura que a classe pode ser utilizada com o mecanismo de tratamento de exceções, logo essas Exceções customizadas são derivadas da classe Exception.
  • Importante: Antes de criar a nossa própria exceção, é recomendado verificar se já existe alguma exceção na biblioteca Java que já nos forneça o que precisamos. Afinal, não queremos reinventar a roda!

🔸 Blocos try/catch/finally

    Bloco try:
  • Região onde se encontra o código que queremos verificar se irá ou não lançar uma exceção.
  • Caso ocorra uma exceção em algum ponto, o restante do código contido no bloco try não será executado.
  • O bloco try não pode ser declarado sozinho, por tanto, precisa estar seguido de um ou vários blocos catch e/ou de um bloco finally.
    Bloco catch:
  • Região onde se encontra o possível tratamento da exceção. Isso significa que só será executado caso o bloco try apresentar alguma exceção.
  • Recebe como argumento a classe ou subclasse da possível exceção.
  • No seu escopo ficam as instruções de como tratar essa exceção.
  • Pode haver mais de um bloco catch, porém, será executado apenas o primeiro bloco que identificar a exceção.
  • Importante: Caso você utilize mais de um catch e houver exceções de uma mesma hierarquia de classes, certifique-se que a classe mais genérica esteja como argumento do último catch. Caso contrário, qualquer exceção sempre cairá neste primeiro catch, assim fazendo com que a exception mais específica não seja verificada.
    Bloco finally:
  • Este bloco é opcional, mas caso seja construído, quase sempre será executado. (A menos que seja forçada sua parada, por exemplo, com um System.exit(0), no catch)
  • Dentro do bloco finally, poderá conter outros blocos try, catch, bem como outro finally.
  • Geralmente utilizado quando precisamos executar algum código independente se ocorrer exception ou não.

🔸 Cláusulas throws e throw

    Cláusula throws
  • Usada na assinatura do método.
  • Necessária apenas para exceções checked.
  • Informa ao chamador que este método pode lançar uma das exceções listadas no escopo do método. Isso obriga a fazer a captura dessa exception (try-catch) ou relançar o throws.
    Cláusula throw
  • É usada para lançar explicitamente uma exceção de um método ou de qualquer bloco de código.
  • Usada principalmente para lançar exceções personalizadas
  • Importante:
  • O fluxo de execução "normal" do programa para imeditamente apos a execução da cláusula throw. O bloco try envolvente mais próximo é verificado para encontrar um bloco catch que corresponda ao tipo de exceção.
  • Caso encontre essa correspondência, o controlado é transferido para esse bloco. Caso contrário, o próximo bloco try envolvente é verificado e assim por diante.
  • Outro caso, é se nenhuma captura for encontrada, o manipulador da exceção padrão interromperá o programa.

🔗 Referências

🤝 Contribuindo

Este repositório foi criado para fins de estudo, então contribua com ele.
Se te ajudei de alguma forma, ficarei feliz em saber. E caso você conheça alguém que se identidique com o conteúdo, não deixe de compatilhar.

Se possível:

⭐️ Star o projeto

🐛 Encontrar e relatar issues


Disponibilizado com por cami-la.

Comments
  • referência inacessível

    referência inacessível

    sugiro retirar a referência "https://www.projetojavaweb.com/certificado-aluno/plataforma-curso/aulaatual/467726283/idcurso /1/idvideoaula/161"

    opened by silvamt 1
  • Unchecked Exception - String

    Unchecked Exception - String

    Oie Cami, tudo bem?

    Seria incorreto se eu apenas alterasse a string desse código por um int? Eu terei que fazer isso todas as vezes que colocar o string e quiser fazer um calculo, por exemplo? É o meu primeiro contato direto com a programação, então fiquei um pouco confusa pois pelo o que eu entendi até agora o string teria que ser usado para letras 😭 😭

    Muito obrigada ✨

    opened by cybergrazi 1
  • Pequena modificação no texto

    Pequena modificação no texto

    Olá Camila, tudo bem? Fiz uma pequena modificação no parágrafo referente ao "Checked Exception", inseri um espaço no "e tratados", realizei a modificação e fiz o envio por meio do comando "git pull origin master", gostaria de saber se agi da maneira correta ou se teria um outro caminho, muito obrigado pela atenção e por todo o conteúdo disponibilizado, Deus abençoe.

    opened by ricardobjr 2
  • Exceções personalizadas não podem estender de RuntimeException?

    Exceções personalizadas não podem estender de RuntimeException?

    Oi Cami,

    Parabéns pela didática! (:

    Vc não abordou sobre a possibilidade das exceptions personalizadas poderem estender de RuntimeException ao invés de estenderem direto de Exception. Mas essa possibilidade existe, correto?

    Aguardo retorno e agradeço desde já <3 <3

    opened by vanessaestanislau 3
  • Parabéns pelo trabalho

    Parabéns pelo trabalho

    Estou assistindo as tuas aulas de Java através do Bootcamp DIO GFT QA e só gostaria de dizer que adoro a sua didática, a paciência e até quando aparecem os erros é bom deixar no vídeo porque já ensina como resolver.

    Deus abençoe fortemente.

    opened by femilkbr 3
Owner
Camila Cavalcante
Camila Cavalcante
Curso Bootcamp GFT Start Woman Java (dizem que quem deixa estrelas nesse repositório, é pq é bonito! :)

☕ Curso: Bootcamp GFT Start Woman Java O Bootcamp GFT Start Woman Java é um programa gratuito direcionado para desenvolvedoras que estão começando a j

Sah 4 May 7, 2022
Projeto prático de um estacionamento para o curso de Java do FourCamp

FourParking ?? Sobre • Features • Contribuição • ?? Sobre o projeto Projeto prático para o curso de Java do FourCamp onde será criado um estacionament

robinhosz 4 Aug 17, 2022
Curso que apresenta conceitos introdutórios sobre como podemos trabalhar com debugging na linguagem Java.

Debugging Java Curso que apresenta conceitos introdutórios sobre como podemos trabalhar com debugging na linguagem Java. Curso este ministrado por mim

Camila Cavalcante 414 Jan 4, 2023
Programación de Servicios y Procesos - 01 Programación Multiproceso. 2DAM. Curso 2021-2022

Programación de Servicios y Procesos - 01 Programación Multiproceso Tema 01 Programación Multiproceso. Curso 2021/2022. Contenidos Concurrencia y Para

José Luis González Sánchez 15 Dec 27, 2022
Programación de Servicios y Procesos - 03 Programación de comunicaciones en red. 2DAM. Curso 2021-2022

Programación de Servicios y Procesos - 03 Programación de comunicaciones en red Tema 03. Programación de comunicaciones en red. Curso 2021/2022. Conte

José Luis González Sánchez 13 Dec 27, 2022
Entornos de Desarrollo - 05 Clean Code y TDD: Pruebas de Software. 1DAM. Curso 2021-2022.

Entornos de Desarrollo - 04 Clean Code y TDD: Pruebas de Software Tema 05. Clean Code y TDD: Pruebas de Software. Curso 2021/2022. Contenidos Introduc

José Luis González Sánchez 19 Nov 3, 2022
Programación - 03 Aplicación de Estructuras de Almacenamiento. 1DAM. Ejercicios realizados por el alumnado. Curso 2021-2022

Programacion-03-Ejercicios-2021-2022 Programación - 03 Aplicación de Estructuras de Almacenamiento. 1DAM. Ejercicios realizados por el alumnado. Curso

José Luis González Sánchez 15 Dec 27, 2022
Programación - 04 Programación Orientada a Objetos. 1DAM. Curso 2021-2022

Programación - 04 Programación Orientada a Objetos Tema 04 Programación Orientada a Objetos. 1DAM. Curso 2021/2022. Contenidos Programación Orientada

José Luis González Sánchez 9 Dec 27, 2022
Programación - 05 Programación Avanzada Orientada a Objetos. 1DAM. Ejercicios realizados por el alumnado. Curso 2021-2022.

Programacion-05-Ejercicios-2021-2022 Programación - 05 Programación Avanzada Orientada a Objetos. 1DAM. Ejercicios realizados por el alumnado. Curso 2

José Luis González Sánchez 7 Dec 27, 2022
Programación - Ejemplo de Colecciones y Genéricos con TDAs. 1DAM. Curso 2021-2022.

Programación - Tipo de Datos Abstractos, Colecciones y Genéricos Tema 06 Tipo de Datos Abstracto. 1DAM. Curso 2021/2022. Programación - Tipo de Datos

José Luis González Sánchez 8 Sep 15, 2022
Programación - 06 Tipos de Datos Asbtractos. 1DAM. Ejercicios realizados por el alumnado. Curso 2021-2022.

Programacion-06-Ejercicios-2021-2022 Programación - 06 Tipos de Datos Abstractos. 1DAM. Ejercicios realizados por el alumnado. Curso 2021-2022 ¿Cómo C

José Luis González Sánchez 7 Dec 27, 2022
Entornos de Desarrollo - 07 Desarrollo OO: Diagramas de Comportamiento. 1DAM. Curso 2021-2022.

Entornos de Desarrollo - 06 Diseño OO: Diagrama de Comportamiento Tema 07. Diseño OO: Diagrama de Comportamiento. Curso 2021/2022. Contenidos Diagrama

José Luis González Sánchez 7 Nov 2, 2022
Programación - 04 Programación Orientada a Objetos. 1DAM. Ejercicios realizados por el alumnado. Curso 2021-2022.

Programacion-04-Ejercicios-2021-2022 Programación - 04 Programación Orientada a Objetos. 1DAM. Ejercicios realizados por el alumnado. Curso 2021-2022

José Luis González Sánchez 8 Dec 27, 2022
Programación - 06 Tipos de Datos Asbtractos. 1DAM. Curso 2021-2022

Programación - 06 Tipos de Datos Asbtractos Tema 06 Tipos de Datos Asbtractos. 1DAM. Curso 2021/2022. Contenidos Tipo de Datos Asbtractos Comportamien

José Luis González Sánchez 9 Dec 27, 2022
Programación - 09 Gestión de Bases de Datos mediante código. 1DAM. Curso 2021-2022

Programación - 09 Gestión de Bases de Datos mediante código Tema 09 Gestión de Bases de Datos mediante código. 1DAM. Curso 2021/2022. Contenidos Bases

José Luis González Sánchez 10 Dec 27, 2022
Programación - 05 Programación Avanzada Orientada a Objetos. 1DAM. Curso 2021-2022

Programación - 05 Programación Avanzada Orientada a Objetos Tema 05 Programación Avanzada Orientada a Objetos. 1DAM. Curso 2021/2022. Contenidos Heren

José Luis González Sánchez 9 Dec 27, 2022
Programación - 08 Lectura y Escritura de Información Externa. Ficheros. 1DAM. Curso 2021-2022

Programación - 08 Lectura y Escritura de Información Externa. Ficheros Tema 08 Lectura y Escritura de Información Externa. Ficheros. 1DAM. Curso 2021/

José Luis González Sánchez 13 Dec 27, 2022
Tema 08. Arquitecturas y Patrones de Diseño. Curso 2021/2022.

Entornos de Desarrollo - 09 Arquitectura y Patrones de Diseño Tema 08. Arquitectura y Patrones de Diseño. Curso 2021/2022. Contenidos SOLID. Arquitect

José Luis González Sánchez 12 Nov 2, 2022
Curso da Stack Quarkus - Alura

bitcoin Project This project uses Quarkus, the Supersonic Subatomic Java Framework. If you want to learn more about Quarkus, please visit its website:

null 2 Oct 29, 2021