I have a persistence layer which looks up a JNDI datasource and executes the SQL queries. So in effect, all the persistence methods that I have should handle NamingException and SQLException. Now what would be the best practice to the caller which is usually my middle tier to handle such exceptions? or do I handle them in my persistence layer and throw another generic exception to my service?