Oltre quanto detto appena sopra, ci sono eccezioni lievi ed eccezioni gravi: la differenza sta nel fatto che le eccezioni gravi, se non vengono gestite, provocano un errore nella compilazione, mentre quelle lievi no.

Le eccezioni lievi sono quelle che derivano da RuntimeException. Un tipico caso è la NumberFormatException. Esempio:
codice:
public void mioMetodo() {
   String numero = "19";
   int numero = Integer.parseInt( numero );
}
Questo codice (senza alcun blocco try/catch, né throws) compilerà senza problemi.

Premetto che io, per sicurezza, preferisco catturare tutte le eccezioni (se si chiamano eccezioni ci sarà un motivo... ). In rari casi evito di farlo (ad esempio, se devo leggere un numero da una base di dati dove questo numero è in chiave e mi viene restituito in una stringa).


Ciao.