"Hány nyelv is akkor a C++?"
Többé kevésbé 1, de igazad van, hogy sokan sokféleképp használják. Ezért kell egy közös guideline, hogy adott projekten belül mit és hogy szabad használni. Ha az a szabály, hogy csak olyan kód kerülhet be, ami C és C++ fordítóval is lefordul, már előrelépés a C-hez képest, és innentől már látható, hogy megfelelő szabályozással megfelelő kód fog létrejönni. A C++ fícsöreit elhagyni csak azért, mert rettegsz a többi programozótól, ez olyan open source dolog. Pedig vannak jó open source példák is, lásd webkit.
A kivételkezelés igenis hibakezelés. Az a jó a kivételkezelésben, hogy az fogja kezelni a hibát, aki tudja, mit kezdjen vele, és ez teljesen automatikusan történik, az erőforrások leakelése nélkül. Nyílván nem mindig értelmes használni, de a C++ pont erre épít, hogy a programozó tudja, mikor melyik eszközhöz nyúljon.
Ha a te libed azt mondja, hogy NEM vagyok exception safe, akkor nem lesz az. Nem kényszerít senki rá, akkor a user fog vigyázni rá, hogy ne rakjon kivételdobást a konténereidbe, algoritmusaidba, vagy viseli a következményeket. C-ben sem kezel le mindenki minden hibát (csak hogy a legalapvetőbbet nézzük, a malloc hibáit), könyvtárakban sem.
Mellesleg az exception safety nagyrészt ingyen van (érdemes megnézni a standard könyvtárat ilyen szempontból), és ha neked a RAII egy olyan dolog, ami nyűg, akkor visszautalok arra, hogy nem érted ezt a programozás dolgot. A RAII olyan, mint egy falat kenyér, hatékony környezetben biztosítja az erőforrások felszabadítását.
"elég nagy a penalty az overdesignhoz, hogy ne csábuljon el az ember, és kezdjen el olyan dolgokkal foglalkozni, amire lehet, hogy soha nem lesz szükség."
És ezért nehéz robosztus programot írni C-ben.
----
India delenda est.
Hülye pelikán