Jag är inte helt med på vad du undrar, men jag gör ett försök att svara så får du fråga mer om jag missar bollen.
Java har två typer av Exceptions, Checked och Unchecked. Checked Exceptions är sådana som kontrolleras av kompilatorn. Det är exceptions som kan anses väntade och utvecklare kan anses ha ett vettigt svar på. SQLException och DataAccessException är en sådana exempelvis.
Unchecked Exceptions är sådana som på förhand inte kan anses givna. De dyker typiskt upp när en användarinput är inblandad. Exceptions som IllegalArgumentException, ArrayIndexOutOfBoundsException och NullPointerException är sådant som en utvecklare inte själv bör lyckas med, men ger man användaren i uppdrag att ge parametrar till en metod så kan man ge sig tusan på att denne misslyckas.
Använd try/catch-block när du förutser att exceptions kan kastas
OCH du samtidigt har något "meningsfullt" att göra i catch-blocket. Använd det inte för att kontrollera "flöde", det ska tex aldrig ses som ett alternativ till en if-sats.
Om du har en metod som riskerar att orsaka exceptions som metoden själv inte kan hantera på ett meningsfullt sätt (kontextberoende) så bör/måste du inkludera en throws klausul i metoddeklarationen och överlåta jobbet med att fånga exceptionen det till den kallande metoden.
Kod:
public void myMethod() throws NullPointerException
Du kan också explicit kasta exceptions, även egendefinierade sådana som ärver Exception-klassen, genom
Kod:
throw new MyException()
Loggning av Exceptions är ofta väldigt värdefullt. Det går inte alltid att helt förutse Exceptions och då kan man heller inte hantera dem på ett meningsfullt sätt.