Interessanter Beitrag! ... :uli
Grundsätzlich würde ich mal sagen, dass Exceptions dann geworfen werden sollen, wenn es angebracht ist (Bsp.: Fehlbedienung, fehlende Connection, etc.).
Wenn es sich bei dem Produkt um eine Client-/Serveranwendung handelt, ist es natürlich eine Überlegung wert, wem was und wie gemeldet wird, oder wie und was abgefangen wird.
Daher würde ich die Überlegung anstellen, was man sofort meldet, oder was man z.B. in einer Datenbank loggen kann, damit die Administration ggf. darauf reagieren kann/muss. Bei Critical Error denn auch noch eine Information an die Administration (per Mail, SMS, etc.). Ich denke wie groß man den Aufwand betreibt, hängt 1. vom Produkt, 2. von den Vorgaben, 3. von der Quallitätssicherung, etc. ab.
Das war es mal grob/adhoc, was mir zu diesem Thema eingefallen ist.