I am generically using HrPortletRuntimeException to allow the DAO implementations (and other methods as well) to pass a message to display to the user on the page; e.g. a potentially user-recoverable error or at least alert message.  I did that here as well for consistency though I see merit to using IllegalArgumentException as more descriptive.