Kod koji si napisao bi trebalo to i da radi. Šta je tačno problem? Ako hoćeš da imaš različite poruke u zavnsnosti od tipa greške, onda umesto catch(Exception e) {...} moraš ubaciti nekoliko uzastopnih catch blokova od kojih svaki hvata određeni tip greške. Otprilike ovako:
try { ... }
catch(InputMismatchException e) {...} //za unet string
catch(IllegalArgumentException e) {...} //za deljenje nulom


. Kasnije kako ćeš napredovati sa znanjem tako polako možeš ulaziti i u low-level stvari i još više optimizirati svoj C++ program. No za početnika to nije nužno niti ga itko sili na taj put.
pa mislim da se ne bi složili s tobom. Naime, najveći problem je što u našem jeziku uopće ne postoji prijevod za neke engleske izraze sa područja informatike i programiranja, pa ti zato pojmovi poput "razred, imenici" i sl. djeluju čudno. No što je - tu je. I meni je prije desetak godina bilo čudno kada umjesto "File" na meniju (čitaj: "izbornik" 