When to catch/wrap an exception vs declaring that method throws exception In the snippet below the three exceptions I declare in the throws clause are all thrown by BeanUtils.setProperty(), which is a third party library.

Is letting these three exceptions "bubble upwards" with a throws declaration bad style?  Is it better to wrap them in my own RoleBeanException and throw that?

public BeanRole getRoleBean(Request request) 
    throws IllegalAccessException, InvocationTargetException, NoSuchMethodException 
{
    String[] arrayOfProperties = {"application", "environment", "role"};
    BeanRole roleBean = new BeanRole();
    for (String strProperty : arrayOfProperties) {
        String strValue = BeanUtils.getProperty(request, strProperty);
        BeanUtils.setProperty(roleBean, strProperty, strValue);
    }
    return roleBean;
}
Programming errors should, as much as possible, produce unchecked rather than checked exceptions. Checked exceptions are for circumstances that will occur during the normal operation of the program and thus should be handled. For example, you should handle the IOException raised by attempting to open a file that isn't there. However, there is no reason to handle the exception raised by a misspelled property name. Programming errors in general should produce unchecked exceptions. 

In this case, you should catch all those exceptions inside this function and rethrow them wrapped in a RuntimeException. Don't declare any exceptions types, those are only for exceptions that your caller should handle.