su quello purtroppo non c'è una risposta assoluta, dipende molto dalla funzione che stai creando.
Di solito io gestisco l'eccezione in locale quando il problema non intacca i chiamanti.
Es. se per vari giri cerco una properties e mi creo un sistema di ricerca generale, non trovare la property ovviamente è un problema, posso lanciare all'esterno l'eccezione e bloccarmi li. Di solito catturo l'eccezione, segnalo di non averla trovata, ma fornisco un default value in modo da proseguire l'esecuzione.
Tanti casi sono dello stesso tipo, riguardano più che altro l'architettura del programma-