Exceptions sind eindeutig eine der besseren Erfindungen, und imo auch eine die notwendig war. Der C-Approach ist ja wirklich bescheuert – wenn guter Stil so aussieht, dass man jeden einzelnen Funktionsaufruf in ein if wrapped, kann irgendwas mit der Sprache nicht ganz stimmen. o_O" Exceptions sorgen da gleich für viel mehr Ordnung und erleichtern auch vieles ungemein.
Strikte Regeln, wann man Exceptions einsetzen soll, würde ich mir keine machen – einfach einsetzen, wenn sie den Code lesbarer, klarer oder sonstwie "besser" machen, das sollte man mit etwas Erfahrung dann schon einschätzen können. Natürlich nicht komplett zweckentfremden und z.B., wie manche es schon gemacht haben, als Ersatz für Rückgabewerte nehmen. o_O" Aber wenn etwas in einer Methode schief gehen kann, sollte sie dann imo auch eine entsprechende Exception werfen. Zumindest, wenn das die Methode nicht selber ausbügeln kann.
Und @ Orcey: Naja, Exceptions sind nicht wirklich OOP-spezifisch, auch wenn sie großteils wohl echt in OOP-Sprachen vorkommen. Aber in PHP z.B. gibt's auch welche – Objekte zwar auch, aber man bekommt auch Exceptions ohne je ein anderes Objekt angefasst zu haben. Für ein echtes Beispiel müsste ich allerdings scharf nachdenken – oder natürlich bei Wikipedia cheaten. XD Ah, Prolog hätte mir sogar einfallen können…*kratz*
Und weird, ich dachte PHP hätte schon vor v5 was Exception-mäßiges gehabt…o_O"