Avatar ·

Exceções checked e unchecked em Java: qual a diferença e como usá-las?

Olá a todos. Comecei a estudar Java e não consigo entender a diferença entre exceções checked (verificadas) e unchecked (não verificadas). Li a documentação, mas na prática ainda me confundo. Por exemplo, escrevo um método simples que lê um arquivo: ```java public void readFile(String path) { FileReader file = new FileReader(path); BufferedReader reader = new BufferedReader(file); String line = reader.readLine(); System.out.println(line); } ``` O compilador reclama de `FileReader` e `readLine()` — diz que é preciso tratar `FileNotFoundException` e `IOException`. Eu envolvo em `try-catch` e funciona. Mas depois escrevo um método que divide números: ```java public int divide(int a, int b) { return a / b; } ``` Se passar `b = 0`, o programa falha com `ArithmeticException`, mas o compilador não exige que eu trate nada. Por que isso? Qual é a lógica? Quando usar `throws` e quando usar `try-catch`? E como projetar minhas próprias exceções corretamente?