Wenn tatsächlich ein Fehler vorliegt, dann nimm eine
Exception. Wenn aber dein "Fehler" ein erwartetes Ereignis ist, mit dem man ganz normal weiterarbeiten kann, dann nimm Ereignisse.
Entweder alle deine Objekte haben eine strikte Parent-Child Struktur, sodass du die events zum einen an das Parent hochleiten kannst und dieses das Ereignis an alle weiteren Child Objekte verteilt.
Oder du machst eine Art Container für Ereignisse. Bei dem kanns ich jedes Objekt anmelden (oder stammt halt davon ab) und hier wird die weiterleitung der Ereignisse organisiert.
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.