{"id":19031546,"url":"https://github.com/cami-la/exceptions-java","last_synced_at":"2025-04-04T11:11:43.796Z","repository":{"id":43266140,"uuid":"409972412","full_name":"cami-la/exceptions-java","owner":"cami-la","description":"Curso Tratamento de Exceções em Java","archived":false,"fork":false,"pushed_at":"2023-03-07T00:31:30.000Z","size":67,"stargazers_count":691,"open_issues_count":19,"forks_count":174,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-03-28T10:06:23.032Z","etag":null,"topics":["exceptions","java","throw","throws","trycatch"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/cami-la.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-09-24T13:24:40.000Z","updated_at":"2025-03-19T13:23:45.000Z","dependencies_parsed_at":"2024-11-08T21:37:13.498Z","dependency_job_id":null,"html_url":"https://github.com/cami-la/exceptions-java","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cami-la%2Fexceptions-java","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cami-la%2Fexceptions-java/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cami-la%2Fexceptions-java/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cami-la%2Fexceptions-java/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cami-la","download_url":"https://codeload.github.com/cami-la/exceptions-java/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247166168,"owners_count":20894654,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["exceptions","java","throw","throws","trycatch"],"created_at":"2024-11-08T21:24:05.842Z","updated_at":"2025-04-04T11:11:43.777Z","avatar_url":"https://github.com/cami-la.png","language":"Java","readme":"\u003ch1\u003e\nTRATAMENTO DE EXCEÇÕES EM JAVA\u003c/h1\u003e\n\n\u003cp\u003eCurso que apresenta conceitos introdutórios sobre como podemos identificar e tratar Exceptions na linguagem Java. \nCurso este ministrado por mim em nome da \u003cstrong\u003e \u003ca href=\"https://web.digitalinnovation.one/home\"\u003e DIGITAL INNOVATION ONE  \u003c/a\u003e\u003c/strong\u003e 🧡💛 e disponibilizado de forma gratuita para a comunidade dos desenvolvedores Java.\n\n\u003ch2\u003e\n🛑 Pré-requistos\n\u003c/h2\u003e\n\n- [x] Java JDK 8 ou superior\n- [x] IDE para desenvolvimento Java\n- [x] Conhecimento BÁSICO em OOP\n- [x] Estar disposto a aprender\n\n\u003ch2\u003e 📚 Ementa\u003c/h2\u003e\n\u003col\u003e\n    \u003cli\u003eVisão Geral\u003c/li\u003e\n    \u003cli\u003eUnchecked Exception\u003c/li\u003e\n    \u003cli\u003eChecked Exception\u003c/li\u003e\n    \u003cli\u003eException Personalizada\u003c/li\u003e\n\u003c/ol\u003e\n\n\u003ch2\u003eVisão Geral\u003c/h2\u003e\n\u003cul\u003e\n    \u003cli\u003e Exceção é um evento que interrompe o fluxo normal de processamento de uma classe.\n\u003c/li\u003e\n    \u003cli\u003e O uso correto de exceções torna o programa mais robusto e confiável.\n\u003c/li\u003e\n    \u003cli\u003eCom o tratamento de exceções, um programa pode continuar executando depois de lidar com um problema.\n\u003c/li\u003e\n    \u003cli\u003e\u003cem\u003eImportante:\u003c/em\u003e 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.\n\u003c/li\u003e\n\u003c/ul\u003e\n\n\u003ch3\u003eError:\u003c/h3\u003e Usado pela JVM que serve para indicar se existe algum problema de recurso do programa, tornando a execução impossível de continuar.\n\u003ch3\u003eUnchecked (Runtime):\u003c/h3\u003e Exceptions que PODEM ser evitados se forem tratados e analisados pelo desenvolvedor. \n\u003ch3\u003eChecked Exception:\u003c/h3\u003e Exceptions que DEVEM ser evitados etratados pelo desenvolvedor para o programa funcionar.\n\n\u003cdiv align=\"center\"\u003e\n    \u003cimg src=\"https://i.ibb.co/VjT23Rr/amoTu.png\" alt=\"amoTu\" border=\"0\" width=\"400\" height=\"600\"\u003e\n    \u003cp\u003eHierarquia Exceptions\u003c/p\u003e\n\u003c/div\u003e\n\n\u003ch2 aling=\"center\"\u003ePalavras Reservadas:\u003c/h2\u003e\n\u003cul\u003e\n    \u003cli\u003etry, catch, finally: Cada uma dessas palavras, juntas, definem blocos para o tratamento de exceções.\u003c/li\u003e\n    \u003cli\u003ethrows: Declara que um método pode lançar uma ou várias exceções.\u003c/li\u003e\n    \u003cli\u003ethrow: Lança explicitamente uma exception.\u003c/li\u003e\n\u003c/ul\u003e\n\n\u003chr\u003e\n\u003ch2\u003e🔸 Error\u003c/h2\u003e\n\u003cul\u003e\n    \u003cli\u003eUsado pela JVM, serve para indicar quando existe algum problema de recurso do programa, tornando a execução impossível de continuar.\u003c/li\u003e\n    \u003cli\u003eO “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.\u003c/li\u003e\n\u003c/ul\u003e\n\n\u003ch2\u003e🔸 Unchecked Exception\u003c/h2\u003e\n\u003cul\u003e\n    \u003cli\u003eHerdam da classe \u003cem\u003eRuntimeException\u003c/em\u003e ou da classe \u003cem\u003eError\u003c/em\u003e.\u003c/li\u003e\n    \u003cli\u003eO compilador não verifica o código para ver se a exceção foi capturada ou declarada.\u003c/li\u003e\n    \u003cli\u003eSe uma exceção não-verificada ocorrer e não tiver sido capturada, o programa terminará ou executará com resultados inesperados.\u003c/li\u003e\n    \u003cli\u003eEm geral, podem ser evitadas com uma codificação adequada.\u003c/li\u003e\n\u003c/ul\u003e\n\n\u003ch2\u003e🔸 Checked Exception\u003c/h2\u003e\n\u003cul\u003e\n    \u003cli\u003eAs exceções que são herdadas da classe \u003cem\u003eException\u003c/em\u003e, mas não de \u003cem\u003eRuntimeException\u003c/em\u003e.\u003c/li\u003e\n    \u003cli\u003eO compilador impõe um requisito do tipo \"capturar ou declarar\".\u003c/li\u003e\n    \u003cli\u003eO compilador verifica cada chamada de método e declaração de método para determinar se o método lança (\u003cem\u003ethrows\u003c/em\u003e) exceções verificadas.\u003c/li\u003e\n    \u003cli\u003eSe lançar, o compilador assegura que a exceção verificada é capturada ou declarada em uma cláusula \u003cem\u003ethrows\u003c/em\u003e. \n    \u003cli\u003eCaso não capturada nem declarada, ocorre um erro de compilação.\n\u003c/li\u003e\n\u003c/ul\u003e\n\n\u003ch2\u003e🔸 Exception Personalizada\u003c/h2\u003e\n\u003cul\u003e\n    \u003cli\u003eProgramadores podem achar útil declarar suas próprias classes de exceção.\u003c/li\u003e\n    \u003cli\u003eEssas Exceptions são específicas aos problemas que podem ocorrer quando outro programador empregar suas classes reutilizáveis.\n\u003c/li\u003e\n    \u003cli\u003eUma 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.\u003c/li\u003e\n    \u003cli\u003e\u003cem\u003eImportante\u003c/em\u003e: 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!\u003c/li\u003e\n\u003c/ul\u003e\n\n\u003ch2\u003e🔸 Blocos try/catch/finally\u003c/h2\u003e\n\u003cul\u003e\n    Bloco \u003cstrong\u003e\u003cem\u003etry\u003c/em\u003e\u003c/strong\u003e:\n    \u003cli\u003eRegião onde se encontra o código que queremos verificar se irá ou não lançar uma exceção.\u003c/li\u003e\n    \u003cli\u003eCaso ocorra uma exceção em algum ponto, o restante do código contido no bloco \u003cem\u003etry\u003c/em\u003e não será executado.\u003c/li\u003e\n    \u003cli\u003eO bloco \u003cem\u003etry\u003c/em\u003e não pode ser declarado sozinho, por tanto, precisa estar seguido de um ou vários blocos \u003cem\u003ecatch\u003c/em\u003e e/ou de um bloco \u003cem\u003efinally\u003c/em\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cul\u003e\n    Bloco \u003cstrong\u003e\u003cem\u003ecatch\u003c/em\u003e\u003c/strong\u003e:\n    \u003cli\u003eRegião onde se encontra o possível tratamento da exceção. Isso significa que só será executado caso o bloco \u003cem\u003etry\u003c/em\u003e apresentar alguma exceção.\u003c/li\u003e\n    \u003cli\u003eRecebe como argumento a classe ou subclasse da possível exceção.\u003c/li\u003e\n    \u003cli\u003eNo seu escopo ficam as instruções de como tratar essa exceção.\u003c/li\u003e\n    \u003cli\u003ePode haver mais de um bloco \u003cem\u003ecatch\u003c/em\u003e, porém, será executado apenas o primeiro bloco que identificar a exceção.\u003c/li\u003e\n    \u003cli\u003e\u003cem\u003eImportante\u003c/em\u003e: Caso você utilize mais de um \u003cem\u003ecatch\u003c/em\u003e e houver exceções de uma mesma hierarquia de classes, certifique-se que a classe mais genérica esteja como argumento do último \u003cem\u003ecatch\u003c/em\u003e. Caso contrário, qualquer exceção sempre cairá neste primeiro \u003cem\u003ecatch\u003c/em\u003e, assim fazendo com que a exception mais específica não seja verificada.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cul\u003e\n    Bloco \u003cstrong\u003e\u003cem\u003efinally\u003c/em\u003e\u003c/strong\u003e:\n    \u003cli\u003eEste 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 \u003cem\u003ecatch\u003c/em\u003e)\u003c/li\u003e\n    \u003cli\u003eDentro do bloco \u003cem\u003efinally\u003c/em\u003e, poderá conter outros blocos \u003cem\u003etry, catch,\u003c/em\u003e bem como outro \u003cem\u003efinally\u003c/em\u003e.\u003c/li\u003e\n    \u003c/li\u003eGeralmente utilizado quando precisamos executar algum código independente se ocorrer exception ou não.\u003c/li\u003e\n\u003c/ul\u003e\n\n\u003ch2\u003e🔸 Cláusulas throws e throw\u003c/h2\u003e\n\u003cul\u003e\n    Cláusula \u003cstrong\u003e\u003cem\u003ethrows\u003c/em\u003e\u003c/strong\u003e\n    \u003cli\u003eUsada na assinatura do método.\u003c/li\u003e\n    \u003cli\u003eNecessária apenas para exceções checked. \u003c/li\u003e\n    \u003cli\u003eInforma 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 (\u003cem\u003etry-catch\u003c/em\u003e) ou relançar o \u003cem\u003ethrows\u003c/em\u003e. \u003c/li\u003e\n\u003c/ul\u003e\n\u003cul\u003e\n    Cláusula \u003cstrong\u003e\u003cem\u003ethrow\u003c/em\u003e\u003c/strong\u003e\n    \u003cli\u003eÉ usada para lançar explicitamente uma exceção de um método ou de qualquer bloco de código.\u003c/li\u003e\n    \u003cli\u003eUsada principalmente para lançar exceções personalizadas\u003c/li\u003e\n    \u003cem\u003eImportante\u003c/em\u003e:    \n    \u003cli\u003eO fluxo de execução \"normal\" do programa para imeditamente apos a execução da cláusula \u003cem\u003ethrow\u003c/em\u003e. O bloco \u003cem\u003etry\u003c/em\u003e envolvente mais próximo é verificado para encontrar um bloco \u003cem\u003ecatch\u003c/em\u003e que corresponda ao tipo de exceção.\u003c/li\u003e\n    \u003cli\u003eCaso encontre essa correspondência, o controlado é transferido para esse bloco. Caso contrário, o próximo bloco \u003cem\u003etry\u003c/em\u003e envolvente é verificado e assim por diante.\u003c/li\u003e\n    \u003cli\u003eOutro caso, é se nenhuma captura for encontrada, o manipulador da exceção padrão interromperá o programa.\u003c/li\u003e\n\n\u003c/ul\u003e\n\n\u003ch2\u003e🔗 Referências\u003c/h2\u003e\n\u003cul\u003e\n    \u003cli\u003ehttps://www.devmedia.com.br/trabalhando-com-excecoes-em-java/27601\u003c/li\u003e\n    \u003cli\u003ehttps://www.youtube.com/watch?v=ld2C4GcAtsg\u0026t=296s\u003c/li\u003e\n    \u003cli\u003ehttps://www.programcreek.com/2009/02/diagram-for-hierarchy-of-exception-classes/\u003c/li\u003e\n    \u003cli\u003ehttps://www.projetojavaweb.com/certificado-aluno/plataforma-curso/aulaatual/467726283/idcurso/1/idvideoaula/161\u003c/li\u003e\n    \u003cli\u003ehttps://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Error.html\u003c/li\u003e\n    \u003cli\u003ehttps://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Exception.html\u003c/li\u003e\n    \u003cli\u003ehttps://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Exception.html\u003c/li\u003e\n    \u003cli\u003ehttps://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/RuntimeException.html\u003c/li\u003e\n\u003c/ul\u003e\n\n\u003ch2\u003e 🤝 Contribuindo \u003c/h2\u003e\n\nEste repositório foi criado para fins de estudo, então contribua com ele.\u003cbr\u003e\nSe 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.\n\nSe possível:\n\n⭐️  Star o projeto\n\n🐛 Encontrar e relatar issues\n\n\n------------\n\nDisponibilizado com ♥ por [cami-la](https://www.linkedin.com/in/cami-la/ \"cami-la\").\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcami-la%2Fexceptions-java","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcami-la%2Fexceptions-java","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcami-la%2Fexceptions-java/lists"}