It can be argued whether an exception is necessary at all; why not return an empty collection or null?
The type of exception you should use depends on how you use exceptions in the application.
The first thing you might think is whether it is a functional error (if the user has fixed something) or a technical error (the developers made a mistake).
Another thing you should consider is what is natural for the calling method.
Erno de weerd
source share