codice:class Ecc1 extends Exception {} class Ecc3 extends Exception {} class A { public void p (int i) throws Ecc3 { System.out.println ("- A, p: istr0 -"); if (i == 0) throw new Ecc3 (); i--; System.out.println ("- A, p: istr1 -"); } public void m (int i) throws Ecc1 { System.out.println ("- A, m: istr0 -"); try { if (i == 0) throw new Ecc1 (); i--; System.out.println ("- A, m: istr1 -"); this.p(i); System.out.println ("- A, m: istr2 -"); } catch (Ecc3 ecc) { System.out.println ("- A, m: istr3 -"); } System.out.println ("- A, m: istr4 -"); } } class B extends A { public void p (int i ) throws Ecc3 { System.out.println ("- B, p: istr0 -"); try { System.out.println ("- B, p: istr1 -"); if (i == 0) throw new Ecc3 (); i--; System.out.println ("- B, p: istr2 -"); } catch (Ecc3 e) { System.out.println ("- B, p: istr3 -"); } System.out.println ("- B, p: istr4 -"); } } public class EsempioEccezioni { public static void main (String [] args) throws Ecc1 { int i = 1; A a = new B () ; System.out.println ("- main: istr0 -"); a.m(i); System.out.println ("- main: istr1 -"); } }
Con i=1 e a di tipo A (A a = new A) mi stampa:
- main istr 0 -
eseguo a.m(1)
- A, m: istr0 -
- A, m: istr1 -
eseguo this.p(0)
- A, p: istr0 -
- A, p: istr3 -
- A, p: istr4 -
- main istr 1 -
Con i=1 e a di tipo B (A a = new B) mi stampa:
- main istr 0 -
eseguo a.m(1)
- A, m: istr0 -
- A, m: istr1 -
eseguo this.p(0)
- B, p: istr0 -
- B, p: istr1 -
- B, p: istr3 -
- B, p: istr4 -
- A, m: istr2 -
- A, m: istr4 -
- main istr 1 -
Perchè nel primo caso dopo aver stampato - A, m: istr4 - sono uscito e non ho continuato nella riga sotto this.p(0) mentre nel secondo caso dopo aver stampato - B, p: istr4 - abbiamo continuato sotto this.p(0)????????![]()

Rispondi quotando