exception slúžia na spravovanie chýb... tj. ak sa vyskytne niečo, čo sa nemá, tak sa vyhodí exception - to si vie potom programátor, ktorý danú funkcionalitu používa, odchytiť a spracovať...
v tomto prípade:
ten string nie je integer... takže, keď sa ho pokúsi skonvertovať na integer, tak dôjde ku vyhodeniu výnimky typu numberformatexception... ak máš nejakú časť kódu v try-catch bloku, tak, ak dôjde k vyhodeniu výnimky v try bloku, tak catch blok ju odchytí (ak je to výnimka takého typu, aké má catch odchytávať) - a potom v tom catch bloku sa dá spracovať... v tomto prípade sa to zachytí v catch a na obrazovku sa vypíše cannot parse etc...
ak by si ten string mal ako validný integer, tak sa výnimka nevyhodí a tak sa vykoná výpis toho čísla... catch blok sa potom _nevykonáva_
btw... výnimky sa musia vyhadzovať explicitne - pri písaní metódy... samo od seba to nejde...
potom... výnimky "prepadávajú" call stackom... ak je niekde catch blok, tak sa tam zastavia a tam sa spracujú... tam potom aj pokračuje vykonávanie... ak catch blok nie je, tak sa prepadnú až úplne von a používateľovi vyskočí hláška, že došlo k výnimke a program _spadne_ (v princípe)...