Apuntes
Lidando com exceções
Contenido del apunte (8)
Página 1
Identificando erros
Stack trace: rastro da pilha de execução
try → código que pode dar erro
catch → o que fazer se o erro acontecer
Se der erro:
o try para
o catch executa
Nunca os dois.
Variáveis criadas no try não existem fora dele
Sempre declare a variável antes do try se precisar usar depois
// código que PODE dar erro
} catch (TipoDoErro e) {
// o que fazer SE o erro acontecer
}
4️⃣ Exceção NÃO deve ter if
💥 Regra importantíssima:
❌ Nunca coloque lógica de validação dentro da exceção
A exceção não decide se a senha é inválida
Ela só diz: "a senha é inválida".
Quem decide isso é o código principal (if).
Página 2
Variáveis
Escopo (anota isso ⭐)
Uma variável só existe dentro do bloco { } onde foi criada
{
int x = 10;
}
System.out.println(x); // ❌ ERRO
Divisão entre valores
🧠 Regra de ouro do Java (anota isso)
Quem manda na conta são os tipos dos valores,
não o tipo da variável.
🧠 Analogia simples
Dois números inteiros → conta inteira
Um número quebrado → conta quebrada
int ÷ int = int
double ÷ int = double
🔹 Situação
Uma variável é double, mas o resultado é int.
Exemplo:
double n1 = 5;
int n2 = 2;
int division = n1 / n2;
❌ ERRO DE COMPILAÇÃO
❓ Por quê?
Porque:
n1 / n2 → o resultado é double (2.5)
Você está tentando guardar 2.5 dentro de um int
Java não deixa perder informação automaticamente
Java nunca converte double → int sozinho.
Se quiser, você precisa avisar com cast.
Situação Funciona?
double / int → int ❌
double / int → double ✅
cast para int ✅ (perde decimal)
Página 3
Hierarquia
🌳 A hierarquia dos erros (bem resumida)
Em Java, todos os erros vêm dessa raiz:
Throwable
A partir dela, o Java separa em dois galhos:
Throwable
├── Error
└── Exception
Error
Error
├── OutOfMemoryError
├── StackOverflowError
👉 Erros graves da JVM
👉 Não usamos try/catch neles
Exception
Exception
├── RuntimeException
│ ├── NullPointerException
│ ├── NumberFormatException
│ ├── IllegalArgumentException
└── IOException
👉 Essas são as exceções do dia a dia
O que significa “filho” na hierarquia?
Exemplo:
Exception └── RuntimeException └── NumberFormatException
➡️ NumberFormatException é uma RuntimeException
➡️ RuntimeException é uma Exception
💡 Por que isso importa no try/catch?
Porque o Java pensa assim:
“Se eu pegar o pai, eu pego todos os filhos.”
🎯 Exemplo prático (bem importante)
try {
int n = Integer.parseInt("abc");
} catch (Exception e) {
System.out.println("Erro");
}
✔️ Funciona, porque:
NumberFormatException é filha de Exception
Mas olha isso:
try {
int n = Integer.parseInt("abc");
} catch (NumberFormatException e) {
System.out.println("Erro de número");
}
✔️ Também funciona
👉 Aqui você pegou o filho direto
🚨 Regra MUITO importante (anota ⭐)
O catch mais específico vem primeiro.
❌ ERRADO:
catch (Exception e) { }
catch (NumberFormatException e) { } // nunca roda
✔️ CERTO:
catch (NumberFormatException e) { }
catch (Exception e) { }
Página 4
This
this.message = message;
tradução literal:
this.message → o message que pertence ao objeto
= message → recebe o valor que veio no parâmetro
Página 5
Throw
throw lança a exceção
throws declara que o método pode lançar exceções
throw para o programa
catch decide o que fazer
catch só existe depois de um try.
Formas válidas em Java
1️⃣ try + catch
try { } catch (Exception e) { }
2️⃣ try + catch + finally
try { } catch (Exception e) { } finally { }
3️⃣ try + finally
try { } finally { }
finally aparece mais quando mexe com arquivo, rede, banco
Exceções do Java podem ser lançadas automaticamente ou manualmente.
Java lança sozinho → não precisa throw
Você quer controlar o erro → usa throw
Página 6
🔹 1️⃣ Tipos da conta × Tipo da variável resultado
Operação Tipo do resultado da conta Variável Funciona? Resultado
int / int int int ✅ inteiro
int / int int double ✅ inteiro com .0
int / double double double ✅ decimal
double / int double double ✅ decimal
double / double double double ✅ decimal
int / double double int ❌ erro
double / int double int ❌ erro
double / double double int ❌ erro
📊 TABELA — Divisão, tipos e resultados em Java
Página 7
🧠 Fluxo completo (isso é o mais importante)
1️⃣ A mensagem nasce no throw
throw new InvalidPasswordException("Senha muito curta");
2️⃣ O construtor recebe a mensagem
public InvalidPasswordException(String message) {
super(message);
}
👉 Aqui ela é armazenada
3️⃣ O catch captura a exceção
catch (InvalidPasswordException e) {
4️⃣ getMessage() lê o que foi armazenado
System.out.println(e.getMessage());
📌 Frase perfeita pra anotar
super(message) guarda a mensagem.
getMessage() mostra a mensagem.
Exceções do Java podem ser lançadas automaticamente ou manualmente.
Java lança sozinho → não precisa throw
Você quer controlar o erro → usa throw
Página 8
response.statusCode() → verifica se a requisição deu certo ou deu erro
e.printStackTrace() mostra o erro completo para o programador entender o que deu errado.
Códigos HTTP não são do GitHub (são da Web)
Os números 200, 404, 500 não são exclusivos do GitHub.
Eles vêm do protocolo HTTP, que toda a web usa.
Você pode procurar por:
“HTTP status codes”
“códigos de status HTTP”
Exemplos clássicos:
200 → OK
400 → Bad Request
401 → Unauthorized
403 → Forbidden
404 → Not Found
500 → Internal Server Error
📌 Qualquer API REST usa isso (GitHub, Spotify, Google, etc.).
Información
- Descripción
- Java Java: consumindo API, gravando arquivos e lidando com erros Apunte sobre Lidando com exceções, creado por Brenda Gabriela Senra da Silva el 16/12/2025.
- Creado por
- Brenda Gabriela Senra da Silva · dic 2025
- Actualizado
- 31 dic 2025
- Visitas
- 7
- Valoración