Hallo!
Die grundsätzliche Entscheidung eine Exception zu werfen oder nicht würde ich daran fest machen ob denn nun in meinem "Ablauf" ein besonderes Ereignis aufgetreten ist welches den "normalen" Fortgang des Ablaufs in störender Weise beeinflusst, so dass der Ablauf nicht mehr die Aufgabe erfüllen kann für die er gedacht war. Dann ist noch die Frage welche Art Exception geworfen werden soll. Ist es eine Ausnahme die der Client sinnvoll behandlen kann? Wenn ja, dann sollte der Typ der Exception eine "Checked Exception" (direkt von java.lang.Exception abgeleitet) sein diese muss nun im weiteren Verlauf behandelt werden (entweder per try{...}catch()... oder per throws). Kann der Aufrufer mit der Ausnahmesituation nichts anfangen dann sollte die Exception eine "unchecked Exception" sein (von java.lang.RuntimeException abgeleitet). Dann ist der Aufrufer nicht mehr dazu gezwungen die Ausnahme zu behandeln (kein try ...catch Block bzw. keine throws-Klausel erforderlich).
HTH,
Gruß Tom