Mi sono spiegato male, ma in realtà la questione del pari o dispari è implicita.
Quando generi una eccezione (throw new Exception()), se questa non gestita più avanti esci immediatamente dal metodo. Dove vai a finire? Naturalmente nel punto del codice dove avevi chiamato quel metodo. Se hai una chiamata ricorsiva sei in una situazione di questo tipo:
- main()
- method() (prima volta)
- method() (seconda volta)
- method() (terza volta)
Se nel method() (terza volta) genera una eccezione "salterai" nel suo chiamante, cioè method() (seconda volta), il quale gestirà l'eccezione rilanciandola a method() (prima volta), il quale la gestirà rilanciandola al main(), che uscirà segnalandoti l'errore.
Analizza questa sequenza, e ti renderai conto che vengono lanciate Exception1 e Exception2 in maniera alternata.
Sono di corsa, se non hai ancora le idee chiare (la ricorsione sa essere infida) segnalamelo e proverò a essere più dettagliato

Rispondi quotando