La mia non era una critica ma solamente una perplessità, comunque se controlli bene i due metodi p() vedrai che quello nella classe B gestisce l'eccezione Ecc3 tramite l'apposito costrutto try catch mentre quello presente nella classe A non fa altro che sollevare tale eccezione al metodo chiamente nel quale essa viene gestita. Alla luce di ciò se segui bene il percorso che il codice compie ti dovrebbe essere più chiaro il perchè del comportamento da te descritto.